Содержание
- Чем отличаются параметры SEF и «Перенаправлять URL»
- Что проверить перед настройкой
- Apache: подготовьте .htaccess
- Nginx: настройте виртуальный хост
- IIS: используйте web.config
- Включите параметры в Joomla
- Пример на тестовом сайте
- Если Joomla установлена в подкаталоге
- Что делать при ошибках
- Проверьте новые и старые ссылки
- Результат настройки
Чтобы убрать index.php из адресов страниц Joomla, включите параметры Включить SEF (ЧПУ) и Перенаправлять URL. Перед этим подготовьте веб-сервер: Apache, Nginx и IIS используют разные правила обработки запросов.
Чем отличаются параметры SEF и «Перенаправлять URL»
В общих настройках Joomla за вид адресов отвечают два отдельных параметра.
Включить SEF (ЧПУ) — формирует человекопонятный путь страницы. При этом index.php может оставаться в адресе.
Перенаправлять URL (Use URL Rewriting) — позволяет Joomla формировать SEF-адреса без index.php. Чтобы такие страницы открывались, веб-сервер должен передавать запросы обработчику Joomla.
Условный пример для страницы с алиасом contacts:
- SEF включён, параметр Перенаправлять URL выключен:
https://example.com/index.php/contacts. - SEF и параметр Перенаправлять URL включены, сервер настроен:
https://example.com/contacts.
Фактический путь зависит от меню, языка и настроек маршрутизации. Суффикс .html для удаления index.php не нужен.
Несмотря на название русского параметра, внутреннее переписывание запроса и перенаправление посетителя — разные действия. Сервер может незаметно передать запрос файлу index.php, сохранив красивый адрес в браузере. Перенаправление старого адреса на новый требует отдельной проверки.
Что проверить перед настройкой
Сделайте резервную копию сайта и файлов конфигурации, которые собираетесь изменять. Сохраните несколько действующих ссылок: на материал, категорию, страницу меню и страницу с параметрами.
Уточните у хостинга, какой сервер обрабатывает запросы. OpenServer — среда запуска сайта, а правила обработки URL зависят от выбранного в ней веб-сервера. Если Nginx работает перед Apache, нужно учитывать настройки обоих.
Проверяйте инструкцию на тестовой копии. Одна работающая главная страница ещё не подтверждает, что внутренние адреса настроены правильно.
Apache: подготовьте .htaccess
Для стандартной схемы Apache нужны модуль mod_rewrite и разрешение применять необходимые директивы .htaccess в каталоге сайта.
- Откройте каталог установки Joomla — там находятся
index.php,configuration.phpи папкаadministrator. - Включите показ скрытых файлов и проверьте, есть ли
.htaccess. - Если его нет, переименуйте поставляемый с вашей версией Joomla файл
htaccess.txtв.htaccess. - Если
.htaccessуже существует, сохраните его копию и объедините необходимые правила. Не заменяйте файл вслепую: в нём могут быть настройки хостинга и действующие перенаправления.
Имя должно быть именно .htaccess, без дополнительного расширения .txt.
При AllowOverride None Apache игнорирует такой файл. Для правил mod_rewrite требуется соответствующее разрешение, но другие директивы стандартного файла Joomla могут требовать дополнительных разрешений. На хостинге это проверяет администратор сервера.
Само наличие htaccess.txt рядом с .htaccess не мешает работе при стандартной конфигурации Apache. Удаление htaccess.txt не является способом исправить URL.
Nginx: настройте виртуальный хост
Nginx не читает .htaccess. Переименование файла из дистрибутива Joomla не включает переписывание на этом сервере.
Для Joomla в корне домена типовой фрагмент конфигурации выглядит так:
location / {
try_files $uri $uri/ /index.php?$args;
}
Nginx сначала проверяет существование файла или каталога, затем передаёт остальные запросы Joomla, сохраняя строку параметров.
Это часть конфигурации, а не готовый виртуальный хост. Должны быть правильно заданы корень сайта и обработка PHP. Если блок location / уже существует, измените его с учётом действующих правил, не добавляя дубликат.
Перед применением проверьте конфигурацию командой nginx -t. Перезагружайте конфигурацию только после успешной проверки. На управляемом хостинге используйте предусмотренный панелью способ настройки или обратитесь в поддержку.
IIS: используйте web.config
Для IIS требуется модуль URL Rewrite. Вместо .htaccess используется файл web.config.
Если web.config отсутствует, используйте web.config.txt из дистрибутива вашей версии Joomla, переименовав его в web.config. Если файл уже есть, сначала сохраните копию и согласуйте правила Joomla с существующими настройками.
Правила должны передавать запросы страниц обработчику index.php, не перехватывая существующие файлы и каталоги. При установке в подкаталоге учитывайте область действия приложения и наследование конфигурации IIS.
После подготовки IIS включите соответствующие параметры в Joomla. Настройки Apache для этого сервера не подходят.
Включите параметры в Joomla
Когда сервер подготовлен, перейдите в Система → Общие настройки → Сайт → Параметры SEO. Названия разделов могут немного отличаться в зависимости от версии и перевода интерфейса.
- Установите Включить SEF (ЧПУ) в положение Да и сохраните настройки.
- Откройте внутреннюю страницу через меню сайта и проверьте её работу.
- Установите Перенаправлять URL (Use URL Rewriting) в положение Да и снова сохраните.
- Обновите фронтальную страницу и заново перейдите по ссылке меню.
Ссылка должна вести на адрес без index.php. Уже открытая вкладка со старым адресом сама по себе не показывает, какие ссылки Joomla формирует после изменения настроек.
Не включайте одновременно другие параметры SEO: так проще установить причину ошибки, если она появится.
Пример на тестовом сайте
На тестовом сайте с Joomla 6.1.3 и Apache в OpenServer включение SEF при выключенном параметре Перенаправлять URL даёт адрес https://joomla.local/index.php/ru/spravka.
После включения параметра Перенаправлять URL ссылка меню ведёт на https://joomla.local/ru/spravka. Содержимое страницы остаётся прежним.
На английской странице проверен такой же результат: https://joomla.local/index.php/en/article-en-gb меняется на https://joomla.local/en/article-en-gb.
На этом сайте правила Apache уже находились в .htaccess. Поэтому для проверки потребовалось только переключить настройку Joomla. На другом сервере сначала нужно подготовить его конфигурацию.
Если Joomla установлена в подкаталоге
При установке по адресу https://example.com/portal/ новая ссылка должна сохранять префикс /portal/: https://example.com/portal/contacts.
На Apache файл .htaccess размещают в каталоге установки Joomla. Директива RewriteBase нужна не во всех конфигурациях. Если условия размещения требуют явно задать базовый путь, для этого примера используется:
RewriteBase /portal/
Это путь в URL, а не путь к папке на диске. Также учитывайте правила .htaccess в родительских каталогах.
На Nginx при обычном размещении подкаталога внутри корня сайта соответствующий фрагмент может выглядеть так:
location /portal/ {
try_files $uri $uri/ /portal/index.php?$args;
}
Его нужно согласовать с root, обработчиком PHP и другими блоками location. Для конфигураций с alias этот пример нельзя переносить без адаптации.
На IIS проверьте путь приложения, наследуемые правила и адрес назначения переписывания. Запрос должен попадать в index.php нужной установки.
Что делать при ошибках
После изменения проверяйте не только адрес, но и содержимое страницы. Код ошибки помогает выбрать направление диагностики.
Внутренние страницы возвращают 404
Если главная работает, а внутренние страницы — нет, проверьте применение правил переписывания.
На Apache проверьте имя и расположение .htaccess, модуль mod_rewrite и разрешения AllowOverride. На Nginx — выбранный виртуальный хост, блок location и путь к обработчику. На IIS — модуль URL Rewrite и область действия web.config.
Если не открывается только одна страница, проверьте сам материал, его публикацию, права доступа и пункт меню. Не каждая ошибка 404 связана с сервером.
После изменения появилась ошибка 500
Посмотрите журнал ошибок сервера за время запроса. Возможные причины — недопустимая директива, синтаксическая ошибка, конфликт правил или цикл переписывания.
На Apache причиной может быть директива Options, изменение которой запрещено хостингом. Не удаляйте блоки конфигурации наугад: исправляйте строку, на которую указывает журнал.
На IIS ошибка 500.19 указывает на проблему чтения конфигурации. Конкретную причину уточняют по коду и описанию ошибки.
Для восстановления верните изменённый файл из резервной копии. Если серверная конфигурация исправна, но новые адреса не работают, временно выключите параметр Перенаправлять URL в Joomla.
index.php остаётся в ссылках
Проверьте сохранённые значения обоих параметров SEO. Очистите относящийся к странице кеш и откройте ссылку заново.
Если проблема встречается только в отдельных местах, изучите источник ссылки: она может быть прописана вручную в материале, модуле, шаблоне или расширении.
Системная ссылка в редакторе вида index.php?option=com_content&view=article&id=123 сама по себе не означает ошибку. Joomla и системный плагин SEF могут преобразовать её при выводе. Проверять нужно итоговую ссылку на фронтальной странице. В HTML амперсанды такой ссылки записываются как &.
Проверьте новые и старые ссылки
После настройки откройте материалы, категории и вложенные пункты меню. Проверьте изображения, стили, поиск, формы, пагинацию и переключение языка, если эти функции используются.
Затем откройте сохранённые старые адреса с index.php и системными параметрами. Убедитесь, что они приводят к соответствующим страницам, сохраняют нужные параметры и не образуют цепочки или циклы перенаправлений.
Включение параметра Перенаправлять URL не следует считать гарантией постоянного перенаправления всех старых URL. Если старый и новый адреса доступны одновременно, отдельно настройте и проверьте переход к выбранному основному адресу. Для постоянного перенаправления обычно используют код 301.
Не применяйте общее правило удаления index.php ко всем запросам без проверки: оно может затронуть административную часть, формы и служебные обращения.
Обновите вручную заданные внутренние ссылки и карту сайта. Несуществующая страница должна по-прежнему возвращать 404, а не перенаправляться на главную.
Результат настройки
Адреса Joomla без index.php требуют согласованной работы CMS и веб-сервера. Сначала подготовьте правила для Apache, Nginx или IIS, затем включите параметры Включить SEF (ЧПУ) и Перенаправлять URL. Завершите настройку проверкой внутренних страниц и старых ссылок.
Упоминаемые термины:
HTML, PHP, Алиас, Меню сайта, Плагин, SEO, CMS, Бэкап, Карта сайта, Open Server, Apache, Редирект, Перенаправления





Комментарии
Проверьте, есть ли файл .htaccess в корне сайта. Если его нет, то там должен быть файл htaccess.txt, его нужно переименовать.