# Причина
В Laravel используется единая точка входа для запросов, поэтому web-сервер должен правильно передавать входные параметры в index.php
Следовательно, если работает только главная страница, а остальные нет, то web-сервер неверно передаёт запрос.
# Кэш
Посмотреть доступные маршруты можно командой: php artisan route:list
Очистить кэш: php artisan route:clear
# Apache
Правила для ЧПУ описываются в .htaccess , причины по которым они могут не работать:
# mod_rewrite
Не установлен или отключён mod_rewrite
Посмотреть загруженные модули можно командой:
1apachectl -M
Активировать модуль:
1sudo a2enmod rewrite2sudo service apache2 restart
# AllowOverride
Директива AllowOverride имеет значение None для директории проекта, что отключает чтение .htaccess
Значение должно быть All
1# /etc/apache2/apache2.conf2<Directory /var/www/>3 AllowOverride All4</Directory>
Обрати внимание на путь, нужен тот, где находится твой проект. Тоже самое можно указать в конфигурации самого хоста, а не основного конфига.
Не забудь перезапустить apache после изменений в конфигурации. Быстро проверить, что .htaccess используется можно добавив в него любую синтаксическую ошибку, если получим 500 ошибку, то файл используется, иначе игнорируется.
# .htaccess
Правки в .htaccess, которые изменили поведение по умолчанию. Сравни свой файл с оригинальным .
RewriteEngine должен иметь значение On, а запросы направляться в index.php:
1RewriteCond %{REQUEST_FILENAME} !-d2RewriteCond %{REQUEST_FILENAME} !-f3RewriteRule ^ index.php [L]
# Nginx
Для Nginx в документации есть раздел с примером конфигурации. Обрати внимание на try_files в секции location /:
1location / {2 try_files $uri $uri/ /index.php?$query_string;3}
Какие-либо изменения в данной строке могут повлиять на правильную работу, поэтому попробуй использовать в точности как в документации.