Автоматически убираем index.php через .htaccess

Убираем /index.php с 301 редиректом

Каждую страницу которая заканчивается на / можно открыть и через /index.php. Думаю, каждый более-менее уважаемый вебмастер это знает и вдаваться в подробности не стоит. Мы думаем, что это не сильная проблема как для людей, так и для поисковых роботов. Но все же, что-бы было на 100% правильно, давайте сделаем так, что если страница открывается через слэш, то ее нельзя было открыть через /index.php или /index.html. Естественно, везде должен отадаваться 301 редирект. чтобы ранее проставленные ссылки не теряли свой вес.


Результат работы скрипта

Как забирать окончание /index.php в Битриксе

Битрикс самая популярная коммерческая CMS, да и мы ее используем, поэтому давайте рассмотрим пример на ней. Многие вебмастера пытаются решить подобную задачу через php, записав код в init.php. но тут возникает 2 ошибки:

  • Редирект не будет работать при композите, потому что композит не грузит ядро битрикса;
  • Большая нагрузка на сервер, т.к. запускается Apache для редиректа.

Вообщем, правильно делать такой редирект исключительно через.htaccess файл. Откроем файл .htaccess, который лежит в корне битрикса и просто добавим 2 строчки кода. RewriteBase / нужно дописать после RewriteEngine On, а в конец всех правил добавим RewriteRule ^(.*)index\.php$ $1 [R=301,L]. Естественно, все в конструкции <IfModule mod_rewrite.c> должно лежать. Код:


  Options +FollowSymLinks
  RewriteEngine On
  #Добавил
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
  #Добавил
  RewriteRule ^(.*)index\.php$ $1 [R=301,L]

Забирать окончание /index.php через .htaccess

Если у вас не битрикс, то в корне сайта в .htaccess файле (если его нет, то создайте) нужно добавить такой код:


  RewriteEngine On
  RewriteBase /
  RewriteRule ^(.*)index\.php$ $1 [R=301,L]

Надеюсь вы решили вашу задачу!


© Copyright 2009 - 2017. Программирование и верстка руками и с умом. ИТ-аутсорс для СНГ.

ИП Шкабко Роман, Код ЕДРПОУ: 34047020