Популярные правила редиректов через htaccess

453
.
Simba
Кадило крутится, лавэха мутится
Частенько сеошники требуют настроить редиректы на сайте особым образом.
В гугле готовые правила не всегда получается быстро найти, посему рассмотрим все их тут)

1. Редирект с поддоменов в т.ч. с www, wap и т.д.
Бывают ситуации, когда сайт становится доступен по различным адресам поддоменов.
Например mail.site.ru, www.site.ru и т.д.
Это несет с собой ряд проблем. Поисковые роботы начинают индексировать все эти сайты, а это не очень хорошо.
Исправляем всё это с помощью следующих правил:
RewriteCond %{HTTP_HOST} ^(.*).site.ru [NC]
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]


2. Редирект с http на https c исключениями.
Необходимо настроить редирект таким образом, чтобы редиректило с http на https,
но при этом если запрашивают файл sitemap.xml или robots.txt, редирект не должен сработать.

Правила будут следующими:
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/sitemap\.xml$ [NC]
RewriteCond %{REQUEST_FILENAME} !^/robots\.txt$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]


site.ru необходимо заменить на адрес вашего сайта.
Перед описанными выше правилами необходимо включить mod_rewrite с помощью следующих строк:
RewriteEngine On
RewriteBase /
.
JohnCMS
Еще можно так
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
.
мелкое дополнение
лучше (на всякий случай) все правила брать внутрь условия проверки наличия модуля
<IfModule mod_rewrite.c> # проверка наличия модуля
RewriteEngine on # попытка включить, если вдруг он есть, но выключен
RewriteBase / # установка "корня" для правил
....
</IfModule> # конец условия проверки наличия модуля
.
тема в закладках еси чо..
.
JohnCMS
Дополнение
http://site.ru/index.php
http://sute.ru/index.html
http://site.ru/index.wml и т.д
Склейка на http://site.ru/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
RewriteCond %{REQUEST_URI} ^/index$ [OR]
RewriteCond %{REQUEST_URI} ^/index[.]+(\w+)$
RewriteRule . / [R=301,L]
Всего: 5