Переадресация с домена с www на домен без www:

Способ без указания домена:


Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]


и еще один обычный:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ //example.com/$1 [L,R=301]



Переадресация с домена без www на домен с www:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

Второй способ:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ //www.example.com/$1 [L,R=301]


Редирект с index.php на главную

#Options +FollowSymLinks #можно поиграться с этой строкой, не все сервера поддерживают.
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP
RewriteRule ^index\.php$ //site.ru/ [R=301,L]


301 редирект страниц со слэшем и без

Это еще один вид дублей, тут мы склеим страницы site.ru/category/ и site.ru/category, как видите, в конце второго урла не стоит слэша:

#Options +FollowSymLinks #можно поиграться с этой строкой, не все сервера поддерживают.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

Если вам нужно наоборот оставить слэш в конце урла, то вам нужен данный вариант:

#Options +FollowSymLinks #можно поиграться с этой строкой, не все сервера поддерживают.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]


301 редирект с протокола http:// на защищенный протокол https://

Переводим сайт на современный протокол передачи данных!

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]


Каждый из приведенных выше вариантов для протокола нужно прописывать сразу после включения mod_rewrite, а именно - после директивы RewriteEngine On.

Редирект при переезде сайта.