#Что означает сообщение
404 на страницах
Переименуйте htaccess.txt в .htaccess, включите mod_rewrite или добавьте try_files в nginx.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Нет .htaccess | Отдельно проверьте фактор «Нет .htaccess» в момент, когда возникает описанная неисправность; сравните с работой исправного устройства или настройки. Отслеживайте результат по журналу нужной службы, не по соседним сайтам. | Если проверка подтверждает «Нет .htaccess», исправьте только относящийся к нему элемент, сохранив прежнее значение и возможность возврата. |
| Нет mod_rewrite | В Apache модуль rewrite не активен или правила не обрабатываются из-за конфигурации AllowOverride. | Проверьте активность модуля и применение .htaccess, затем протестируйте только один адрес Joomla. |
| nginx без try_files | nginx не читает .htaccess и передаёт отсутствующий физический путь как 404 вместо входной точки Joomla. | Настройте подходящий try_files для виртуального хоста с проверкой nginx -t перед перезагрузкой. |
| Неверный RewriteBase | При установке Joomla в подпапку правила перенаправления могут указывать на корень другого каталога. | Сверьте RewriteBase с реальным путём и протестируйте прямой адрес внутренней страницы. |
#Пошаговое решение
- Проверьте исходные условияВ панели Joomla откройте «Система → Общие настройки → Сайт» и найдите параметр «Дружественные URL» (названия зависят от выпуска). Запишите его прежнее значение, затем для проверки откройте страницу с выключенным ЧПУ. Если без ЧПУ страница работает, ошибка связана с обработкой адресов, а не с самой статьёй.
- Создайте .htaccessЕсли веб-сервер Apache, через файловый менеджер хостинга включите отображение скрытых файлов и проверьте наличие
.htaccessв корне Joomla. При наличииhtaccess.txtсначала сохраните копию текущего.htaccess, затем используйте официальный шаблон вашей версии Joomla; не перезаписывайте имеющиеся защитные правила без сравнения. - Проверьте другую возможную причинуДля Joomla в подпапке проверьте
RewriteBaseв.htaccess: она должна соответствовать относительному пути к сайту, а не произвольному домену. Убедитесь, что Apache разрешает правила.htaccessи работает модуль rewrite, например через настройки виртуального хоста или поддержку хостинга. Меняйте только проверенную директиву, предварительно сохранив оригинал. - Проверьте итогЕсли сервер Nginx,
.htaccessвообще не обрабатывается: администратор должен проверить правилоtry_filesи передачу запроса во фронт-контроллерindex.phpв конфигурации виртуального хоста. После изменения выполнитеnginx -t, затем согласованную перезагрузку конфигурации. Откройте старую и новую ссылку, проверьте отсутствие цикла перенаправлений и реальные HTTP-коды 200/404.
#На что обратить внимание
Прежде чем менять правила, сохраните исходный файл и выполните контрольное открытие нескольких ссылок. Не создавайте бесконечных перенаправлений и не включайте сразу несколько несовместимых правил.