PHP

Joomla: как убрать index.php из адреса сайта

Короткий ответ: в Joomla нужно включить человекопонятные адрес, включить переписывание адрес, настроить серверный rewrite и для Apache переименовать htaccess.txt в .htaccess. После этого адреса должны открываться без index.php

Если просто включить настройку в админке, но не настроить сервер, сайт может начать отдавать 404-ошибки. Поэтому здесь важны две части: настройки Joomla и настройки веб-сервера

Настройки в админке Joomla

Откройте админку Joomla и перейдите в глобальную конфигурацию сайта. Обычно нужны параметры

  • Search Engine Friendly адресs — включить
  • Use адрес Rewriting — включить
  • Adds Suffix to адрес — по желанию

Названия могут немного отличаться в зависимости от версии и перевода Joomla, но смысл тот же: включить SEF-ссылки и разрешить переписывание адрес

После сохранения проверьте одну внутреннюю страницу. Если index.php исчез, но страница открывается, настройка сработала

Для Apache: переименуйте htaccess.txt

В корне Joomla обычно есть файл

htaccess.txt

Его нужно переименовать в

.htaccess

Именно этот файл содержит правила переписывания адресов для Apache. Без него включение адрес rewriting часто приводит к ошибкам

Если файла нет, проверьте корень сайта и права доступа. Иногда файл скрыт файловым менеджером, потому что начинается с точки

Проверьте mod_rewrite

Для Apache нужен модуль mod_rewrite. На хостинге он обычно включен, но на своем сервере может потребоваться настройка

На Ubuntu-подобных системах часто используют

sudo a2enmod rewrite
sudo systemctl restart apache2

Также важно, чтобы для директории сайта было разрешено AllowOverride, иначе .htaccess будет игнорироваться

Пример фрагмента Apache

<Directory /var/www/site>
    AllowOverride All
    Require all granted
</Directory>

После изменения конфигурации Apache нужно перезапустить

sudo systemctl restart apache2

Если сайт работает на Nginx

Nginx не использует .htaccess. Если Joomla работает через Nginx, правила переписывания нужно прописывать в конфигурации сервера

Типовая идея такая: сначала пытаться отдать файл или папку, а если их нет — отправлять запрос в index.php

location / {
    try_files $uri $uri/ /index.php?$args;
}

После изменения конфигурации проверьте ее и перезапустите Nginx

sudo nginx -t
sudo systemctl reload nginx

На хостинге с Nginx лучше уточнить правила у поддержки, потому что пользователь не всегда имеет доступ к конфигурации сервера

Что делать, если после включения появились 404

Сначала отключите Use адрес Rewriting в Joomla и проверьте, возвращается ли сайт в рабочее состояние. Если да, проблема почти точно в rewrite-правилах сервера

Дальше проверьте

  • файл .htaccess действительно лежит в корне Joomla
  • Apache читает .htaccess
  • включен mod_rewrite
  • сайт не работает за Nginx без нужного try_files
  • кэш Joomla и кэш браузера очищены

Не меняйте сразу десяток настроек. Включайте по одной и проверяйте внутреннюю страницу

Нужно ли делать редирект со старых адрес

Если сайт уже индексировался с index.php, желательно сделать так, чтобы старые адреса перенаправлялись на новые. Иначе могут появиться дубли страниц: один вариант с index.php, второй без него

В Joomla и на сервере это решается настройками маршрутизации, canonical адрес и редиректами. Для SEO лучше проверить несколько старых адресов вручную и убедиться, что они ведут на чистые адрес

Мини-практика

Возьмите одну внутреннюю страницу сайта и проверьте четыре состояния: старый адрес с index.php, новый адрес без index.php, ответ сервера и отсутствие дубля. Если оба адреса открываются с кодом 200 без редиректа, это повод настроить перенаправление

Частые ошибки

Включили адрес rewriting, но не переименовали htaccess.txt Для Apache файл должен называться .htaccess

Используют Nginx и ждут, что .htaccess сработает Nginx не читает .htaccess. Нужны правила в конфигурации Nginx

Сайт ушел в 404 после настройки Отключите rewrite в Joomla, верните рабочее состояние и проверяйте серверные правила

Забыли про старые адрес в индексе Если старые ссылки уже есть в поиске, проверьте редиректы и canonical, чтобы не плодить дубли

Что почитать дальше по PHP

Если нужен общий маршрут по теме, откройте рубрику PHP. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x