В 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');
Дополнительные соображения:
- Очистите кеш Laravel и файлы конфигурации после внесения любых изменений.
- Дважды проверьте конфигурацию вашего веб-сервера и убедитесь, что необходимые модули включены (например,
mod_rewrite
для Apache). - Всегда делайте резервную копию файлов проекта перед изменением какой-либо конфигурации.
В этой статье мы рассмотрели четыре различных метода удаления слова «public» из URL-адреса в Laravel 9. В зависимости от конфигурации вашего сервера и среды разработки вы можете выбрать наиболее подходящий метод. Не забудьте рассмотреть последствия каждого метода и тщательно протестировать перед развертыванием приложения.