Убрать index.php и index.html из URL

Убрать index.php и index.html из URL

Убираем index.php в конце URL-адреса

RewriteCond %{REQUEST_METHOD} =GET
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
RewriteRule ^(.*)$ %1/ [R=301,L]

Еще вариант

RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
RewriteRule ^(.*)$ %1/ [R=301,L]

Еще вариант

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP
RewriteRule ^index\.php$ https://site.ru/ [R=301,L]

Еще вариант

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

Еще вариант для битрикса

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/bitrix/admin/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

Еще один для битрикса

RewriteCond %{THE_REQUEST} /(.*)index.php.*$
RewriteCond %{THE_REQUEST} !bitrix/admin/
RewriteRule .* https://site.ru/%1 [R=301,L]

301 редирект только адреса site.ru/index.php без GET параметров

RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)$ https://site.ru/? [R=301,L]

301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами

Пример: типа site.ru/index.php?get=1 на site.ru/?get=1

RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ https://site.ru/ [R=301,L]

Убрать index.php внутри URL

В Drupal даже после того, как убрали index.php остаются такие url вида: site.ru/index.php/node/2 чтобы убрать и их, добавить строчку

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP
RewriteRule ^index\.php$ https://site.ru/ [R=301,L]
RewriteRule ^(index\.php/.*)$ / [R=301,L] 

Еще вариант

RewriteRule ^index.php/(.+)$ /$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]

Еще вариант

DirectoryIndex index.php
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index\.(.+)$
RewriteRule .+ site.ru/ [R=301,L]

Убрать index.html в конце URL

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP
RewriteRule ^index\.html$ https://site.ru/ [R=301,L]

Еще вариант

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

Убрать index.html и index.php главной страницы

RewriteEngine On
RewriteRule ^index\.html$ / [R=301,L]
RewriteEngine On
RewriteRule ^index\.php$ / [R=301,L]

Убираем всё сразу

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ 
RewriteRule ^(.*)index\.(php|html|htm)$ https://site.ru/$1 [R=301,L]

Описание

Очень важные редиректы. Страницы дубли с index.php можно часто наблюдать в выдаче, когда забывают сделать редиректы. И как правило не на первых страницах выдачи. Также часто забывают закрывать заглушки CMS/темы/хостинга в виде index.html или index.htm

Хочу обратить внимание еще на тот факт, что проверять редиректы лучше не только для главной страницы, но и для страниц категорий, разделов. Особенно часто тут грешат многие CMS (в частности Битрикс, Drupal, Joomla) и страницы категории доступны по адресу а-ля https://site.ru/category/index.php, а то и внутри урла, как у Друпала https://site.ru/index.php/node/

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

Также в качестве рекомендации: желательно вообще заглянуть в корень сайта и посмотреть, какие еще могут файлы html там лежать, очень часто забывают установочные, файлы документации и т.д., которые также участвуют в ранжировании и размывают релевантность сайта, особенно, если у вас мало страниц на сайте

Опубликовал(а)Teh
Предыдущая запись
Редирект на добавить или убрать слэш в конце URL
Следующая запись
Редирект с ПРОПИСНЫХ на строчные в URL
Добавить комментарий
Ваш электронный адрес не будет опубликован. Обязательные поля помечены *