404 Not Foundв Joomla не всегда означает, что файл или статья физически удалены.
Сайт может открываться нормально, административная панель работать, а отдельная страница, категория или пункт меню возвращать 404.
Причина может находиться в нескольких уровнях:
- неправильном URL;
- alias материала или категории;
- структуре меню;
- маршрутизации Joomla;
- настройках SEF;
.htaccess;- конфигурации Apache или Nginx;
- стороннем компоненте;
- изменениях после переноса;
- старых ссылках после изменения структуры сайта.
Joomla разбирает URL по сегментам и пытается сопоставить их с маршрутом сайта и роутером компонента. Если часть пути остаётся нераспознанной, Joomla считает такой URL некорректным и возвращает 404.
Сначала определите масштаб проблемы
↑ К оглавлениюНе начинайте сразу менять .htaccess.
Проверьте несколько URL:
- главную страницу;
- другую статью;
- страницу категории;
- проблемный материал;
- пункт меню;
- административную панель.
Например:
главная → работает
категория → работает
одна статья → 404и:
главная → работает
все внутренние страницы → 404— это совершенно разные ситуации.
Если сломана только одна страница, причина вероятнее находится в её маршруте, alias, menu item или состоянии контента.
Если после включения SEF перестали открываться почти все внутренние URL — гораздо важнее проверить rewriting.
Проверьте сам URL
↑ К оглавлениюСначала убедитесь, что открываете текущий адрес страницы.
404 часто возникает после:
- переименования alias;
- переноса материала в другую категорию;
- изменения пункта меню;
- изменения структуры меню;
- отключения старого компонента;
- миграции сайта;
- изменения SEF-настроек.
Например, раньше материал мог находиться по адресу:
/services/site-repairа после изменения структуры Joomla строит:
/support/site-repairСтарая ссылка продолжит вести на 404, если для неё нет корректного перенаправления.
Поэтому полезно сначала открыть материал через сам интерфейс Joomla и сравнить текущий URL со старым.
Проверьте, существует ли сам материал
↑ К оглавлениюУбедитесь, что объект, на который ведёт ссылка:
- существует;
- опубликован;
- находится в доступной категории;
- не перемещён в корзину;
- доступен текущему пользователю.
Не ограничивайтесь только статьёй.
Маршрут Joomla может зависеть также от:
- категории;
- menu item;
- родительского menu item;
- компонента.
Если один из элементов маршрута изменился, старый URL может перестать соответствовать новой структуре.
Проверьте alias
↑ К оглавлениюAlias участвует в формировании SEF URL.
Например:
/article-titleможет строиться из alias материала или элемента маршрута.
После изменения alias старый адрес не обязан продолжать работать автоматически.
Проверьте:
- alias материала;
- alias категории;
- alias пункта меню;
- родительские menu items.
Особенно если 404 появилась сразу после изменения названия или структуры сайта.
Проверьте пункт меню
↑ К оглавлениюВ Joomla меню — это не только визуальная навигация.
Menu item участвует в построении маршрута страницы.
Актуальная документация Joomla описывает, что при разборе SEF URL router последовательно сопоставляет сегменты пути с alias пунктов меню и использует найденный Itemid для определения контекста страницы.
Поэтому ситуация:
удалили пункт меню
↓
старый URL начал давать 404может быть вполне связанной.
Проверьте:
- существует ли нужный menu item;
- опубликован ли он;
- какой component/view он открывает;
- не поменялся ли его alias;
- не изменился ли родительский пункт.
Если 404 появилась после включения SEF
↑ К оглавлениюОчень характерный сценарий:
обычные URL → работали
↓
включили SEF / URL rewriting
↓
внутренние страницы → 404В Joomla настройки красивых URL и серверный rewriting — связанные, но не одинаковые вещи.
Joomla может формировать SEF URL сама, а удаление index.php из адреса требует корректной настройки веб-сервера. Для Apache Joomla официально описывает использование .htaccess и mod_rewrite; если rewriting настроен неправильно, внутренние URL могут перестать работать.
Проверьте, работает ли URL с index.php
↑ К оглавлениюЭто полезный диагностический тест.
Если адрес вида:
https://example.com/index.php/example-pageработает, а:
https://example.com/example-pageвозвращает 404, область поиска уже сильно сузилась.
Очень вероятно, что Joomla сама умеет разобрать маршрут, а веб-сервер не передаёт clean URL в Joomla так, как ожидается.
Тогда нужно проверять:
- URL Rewriting;
.htaccess;mod_rewrite;- VirtualHost;
- Nginx rules.
Не нужно в этот момент менять материалы или базу данных.
Apache: проверьте .htaccess
↑ К оглавлениюСтандартная поставка Joomla содержит:
htaccess.txtДля Apache его обычно используют как основу активного:
.htaccessJoomla отдельно предупреждает, что настройки должны соответствовать конкретному серверному окружению.
Если 404 возникла после:
- включения URL Rewriting;
- переноса сайта;
- изменения
.htaccess; - обновления серверной конфигурации,
сравните файл с последней рабочей версией.
Не заменяйте существующий .htaccess вслепую — в нём могут находиться дополнительные правила сайта.
Проверьте mod_rewrite
↑ К оглавлениюДля Apache удаление index.php из URL обычно опирается на rewriting.
Если URL с index.php работает, а без него — нет, проверьте:
- загружен ли
mod_rewrite; - разрешены ли
.htaccessoverrides; - применяется ли файл
.htaccess; - корректен ли VirtualHost.
Официальная Joomla-документация отдельно указывает, что при запрещённых .htaccess overrides файл может игнорироваться, а настройка rewriting не даст ожидаемого результата.
Проверьте RewriteBase
↑ К оглавлениюОсобенно это важно, если Joomla установлена не в корне домена.
Например:
https://example.com/joomla/и сайт физически работает из подкаталога.
Тогда настройки, рассчитанные на:
/могут не соответствовать реальному расположению.
В официальной инструкции Joomla RewriteBase отдельно упоминается для Joomla, установленной в подпапке.
Не меняйте его просто потому, что увидели строку в интернете.
Сначала определите фактический DocumentRoot и путь установки.
Nginx не использует .htaccess
↑ К оглавлениюЕсли сайт работает на Nginx:
.htaccessвообще не управляет маршрутизацией.
Для Nginx rewriting задаётся в конфигурации сервера.
Joomla имеет отдельные рекомендации по SEF URL для Nginx именно потому, что механизм отличается от Apache.
Поэтому при 404 сначала выясните:
Apache
или
Nginxи только затем редактируйте соответствующую конфигурацию.
Если 404 появилась после переноса сайта
↑ К оглавлениюПосле миграции файлы и база могут быть полностью исправны, но серверное окружение — другим.
Например:
старый сервер → Apache
новый сервер → Nginxили:
старый сайт → корень домена
новый сайт → подкаталогТогда старые rewrite rules могут больше не соответствовать архитектуре.
Проверяйте:
- фактический веб-сервер;
- DocumentRoot;
- путь Joomla;
- настройки SEF;
- active rewrite configuration;
- старые и новые URL.
Не импортируйте базу повторно только из-за 404.
Если 404 только у одной категории
↑ К оглавлениюПроверьте:
- существует ли категория;
- опубликована ли она;
- существует ли menu item;
- не изменён ли alias;
- корректен ли родительский маршрут;
- открываются ли материалы категории напрямую.
Если остальные Joomla URL работают, глобальные настройки веб-сервера становятся менее вероятной причиной.
Диагностику нужно вести от узкого симптома.
Если 404 только у одной статьи
↑ К оглавлениюПроверьте сам материал и маршрут к нему.
Особенно:
- состояние публикации;
- alias;
- категория;
- связанный menu item;
- старую ссылку;
- текущую ссылку, которую Joomla генерирует сама.
Не исправляйте .htaccess, если остальные сотни SEF URL работают нормально.
Если после изменения меню появились массовые 404
↑ К оглавлениюПоскольку Joomla использует menu items при формировании маршрутов, реорганизация меню может изменить URL существующих страниц.
Например:
/services/repairможет стать:
/support/services/repairпосле изменения родительской структуры.
В этом случае нужно:
- определить старые URL;
- определить новые canonical URL;
- проверить внутренние ссылки;
- настроить нужные 301 redirects.
Не возвращайте старую структуру только ради того, чтобы временно убрать 404, если новая структура принята осознанно.
Не путайте Joomla 404 и серверную 404
↑ К оглавлениюЭто важное различие.
404 может вернуть:
Веб-сервер
Например Nginx или Apache вообще не передал запрос Joomla.
Или:
Joomla
Запрос дошёл до index.php, но router не смог сопоставить путь с существующим маршрутом.
В Joomla router действительно возвращает 404, когда путь содержит нераспознанные сегменты.
Эти два случая требуют разной диагностики.
Как отличить серверную 404 от Joomla 404
↑ К оглавлениюСравните:
- оформление error page;
- response headers;
- server logs;
- PHP/Joomla logs;
- поведение аналогичных URL.
Полезен и тест с:
/index.php/...Если через index.php Joomla открывает нужную страницу, а clean URL не работает, сначала исследуйте rewriting.
Если и Joomla route не распознаёт страницу, ищите проблему уже в menu/component/alias routing.
Проверьте сторонний компонент
↑ К оглавлениюУ каждого Joomla-компонента может быть собственная логика router.
Поэтому ситуация:
обычные статьи → работают
магазин/каталог → 404может быть связана именно с компонентом.
Проверьте:
- обновлялся ли компонент;
- менялись ли его настройки SEF;
- работает ли его menu item;
- изменялись ли категории или aliases;
- что говорит документация конкретного extension.
Не отключайте глобальный SEF всего сайта только потому, что маршруты одного расширения сломались.
Если 404 появилась после обновления расширения
↑ К оглавлениюСильный диагностический сигнал:
до обновления component URLs → работали
после обновления → 404Проверьте:
- changelog расширения;
- настройки router/SEF;
- menu items;
- aliases;
- кеш;
- совместимость версии расширения с Joomla.
Если проблема воспроизводится только внутри этого компонента, Joomla core и серверные rewrite rules могут быть совершенно исправны.
Очистите кеш только после определения гипотезы
↑ К оглавлениюПосле изменения:
- menu items;
- aliases;
- SEF settings;
- extensions
очистка кеша может быть полезным контрольным действием.
Но:
404 → очистить всёне является диагностикой.
Если .htaccess вообще не работает, Joomla cache это не исправит.
Если URL ведёт на удалённый материал — тоже.
Проверьте внутренние ссылки
↑ К оглавлениюПосле изменения структуры сайта старые URL могут оставаться:
- в меню;
- в материалах;
- в модулях;
- в HTML;
- в sitemap;
- во внешних ссылках.
Нужно определить:
страница реально отсутствуетили:
страница существует, но ссылка устарелаВо втором случае исправляется источник URL и, при необходимости, добавляется redirect.
Не перенаправляйте все 404 на главную
↑ К оглавлениюЭто популярное, но плохое «исправление».
Правило:
любая 404 → /скрывает реальные битые URL и мешает понять, что произошло.
Если старая страница имеет прямую новую замену — делайте адресный redirect.
Если контента больше нет и эквивалента нет — корректный 404 может быть правильным ответом.
Используйте 301 только при реальном новом адресе
↑ К оглавлениюНапример:
/old-serviceреально заменена на:
/services/new-serviceТогда логичен:
301Но нельзя массово отправлять любые неизвестные URL на случайную страницу.
Redirect должен отражать реальное перемещение контента.
Учитывайте новые правила Joomla 5.x
↑ К оглавлениюСовременный router Joomla строже относится к некорректным URL, чем старые версии.
С Joomla 4 нераспознанный остаток пути приводит к 404. В Joomla 5.3 router также получил механизм более мягкой обработки некоторых формально неправильных URL: такие маршруты могут помечаться как tainted, после чего SEF plugin способен построить корректный URL и сделать redirect. Это не означает, что любой неправильный URL автоматически восстановится.
Поэтому после обновления старые нестандартные ссылки стоит проверять отдельно.
Не чините URL вручную в ядре Joomla
↑ К оглавлениюRouting реализован Joomla core и routers компонентов.
Не стоит исправлять 404 редактированием:
libraries/...или core router-файлов.
Следующее обновление затрёт изменение, а причина останется.
Если проблема связана со сторонним extension — исправление должно находиться в нём или его настройках.
Если с сервером — в server config.
Если с alias/menu — в Joomla content structure.
Короткий порядок диагностики Joomla 404
↑ К оглавлениюЕсли Joomla показывает 404:
- открыть проблемный URL;
- проверить другие страницы;
- понять: одна страница или массовая проблема;
- сравнить старый и текущий URL;
- проверить материал, категорию и alias;
- проверить menu item и родительскую структуру;
- проверить настройки SEF;
- проверить URL с
index.php; - определить Apache или Nginx;
- для Apache проверить
.htaccessи rewriting; - для Nginx проверить server routing;
- если проблема только в extension — проверить его router;
- после миграции сравнить старое и новое окружение;
- исправить конкретную причину;
- проверить старые URL и нужные redirects;
- повторно пройти внутренние ссылки.
Чего не стоит делать
↑ К оглавлениюПри Joomla 404 не стоит сразу:
- переустанавливать Joomla;
- восстанавливать всю базу;
- заменять
.htaccessслучайным файлом из интернета; - включать и выключать все SEF-настройки подряд;
- менять aliases массово;
- удалять меню;
- редактировать Joomla core router;
- отключать все расширения одновременно;
- перенаправлять любые 404 на главную;
- менять Nginx через
.htaccess; - считать любой 404 проблемой хостинга.
Сначала определите уровень:
старый URL
↓
server rewrite
↓
Joomla router
↓
menu route
↓
component
↓
contentи найдите точное место, на котором маршрут перестаёт распознаваться.
Частые вопросы
Почему Joomla показывает 404, хотя статья существует?
Частая причина — URL больше не соответствует текущему маршруту страницы. Проверьте alias материала и категории, menu item, структуру меню и фактический URL, который Joomla сейчас генерирует.
Почему после включения ЧПУ все внутренние страницы Joomla дают 404?
Если проблема появилась именно после включения URL Rewriting, проверьте настройки веб-сервера. Для Apache важны mod_rewrite и .htaccess; для Nginx правила задаются в конфигурации самого сервера.
Почему URL с index.php работает, а без него — 404?
Это сильный признак проблемы именно с server-side rewriting. Joomla получает маршрут через index.php, но clean URL не передаётся приложению корректно.
Может ли изменение меню вызвать 404?
Да. Joomla использует menu items и их aliases при построении и разборе SEF URL, поэтому изменение структуры меню может изменить маршруты страниц.
Нужно ли перенаправлять все страницы 404 на главную?
Нет. Если у старой страницы есть конкретная новая замена, настройте redirect на неё. Если эквивалента нет, корректный 404 обычно лучше, чем бессмысленный redirect на главную.
Нужна помощь с Joomla?
Разберу причину ошибки 404 в Joomla, проверю маршрутизацию, SEF, меню, alias и конфигурацию веб-сервера, а затем проверю нужные URL после исправления.
↑ К оглавлению