Удаление «public» из URL-адреса Laravel 9: несколько методов, объясненных примерами кода

В Laravel 9 структура по умолчанию включает «общедоступную» папку, в которой находится фронт-контроллер (index.php) и другие общедоступные ресурсы. Однако вы можете удалить слово «public» из URL-адреса вашего приложения для улучшения эстетики и целей SEO. В этой статье мы рассмотрим несколько способов достижения этой цели, а также приведем примеры кода.

Метод 1: использование конфигурации сервера (Apache)

Шаг 1. Создайте или отредактируйте файл.htaccess в корневом каталоге вашего проекта Laravel.

RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]

Шаг 2. Сохраните изменения и перезапустите сервер Apache.

Метод 2: использование конфигурации сервера (Nginx)

Шаг 1. Откройте файл конфигурации Nginx (например, /etc/nginx/sites-available/your-site) и найдите блок «location» для вашего приложения Laravel.

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

Шаг 2. Сохраните изменения и перезапустите сервер Nginx.

Метод 3. Использование префикса маршрута Laravel

Шаг 1. Откройте класс RouteServiceProvider(app/Providers/RouteServiceProvider.php).

Шаг 2. Добавьте следующий код в метод map:

public function map()
{
    $this->mapApiRoutes();
    $this->mapWebRoutes();
    Route::prefix('')->group(base_path('routes/web.php'));
}

Метод 4. Использование встроенного сервера Laravel (локальная разработка)

Шаг 1. Откройте файл server.phpв корневом каталоге вашего проекта Laravel.

Шаг 2. Замените следующую строку:

$request->server->set('PATH_INFO', '/');

с:

$request->server->set('SCRIPT_NAME', '/index.php');

Дополнительные соображения:

  1. Очистите кеш Laravel и файлы конфигурации после внесения любых изменений.
  2. Дважды проверьте конфигурацию вашего веб-сервера и убедитесь, что необходимые модули включены (например, mod_rewriteдля Apache).
  3. Всегда делайте резервную копию файлов проекта перед изменением какой-либо конфигурации.

В этой статье мы рассмотрели четыре различных метода удаления слова «public» из URL-адреса в Laravel 9. В зависимости от конфигурации вашего сервера и среды разработки вы можете выбрать наиболее подходящий метод. Не забудьте рассмотреть последствия каждого метода и тщательно протестировать перед развертыванием приложения.