<IfModule mod_rewrite.c>
#================================================================
# ЧАСТО ИСПОЛЬЗУЕМЫЕ РЕДИРЕКТЫ
#================================================================
#
# ПРИМЕЧАНИЕ: Редиректы зависят от настроек Веб-сервера!
#
# Одинаковые редиректы могут на одном сайте работаеть, а на другом нет.
# В случае, если нужные редиректы не работают, необходимо обратиться
# в техподдержку хостинга, или посмотреть справочную информацию хостинга.
# ---------------------------------------------------------------
# Ссылки с примерами настроек редиректов:
# ---------------------------------------------------------------
# https://masterhost.ru/support/doc/apache/
# https://timeweb.com/ru/help/pages/viewpage.action?pageId=4358249
# ---------------------------------------------------------------
# Редирект для файлов index.php, index.htm, index.html
# /index.php -> /
# /cat/index.php -> /cat/
# ---------------------------------------------------------------
# Вариант 1 (самый простой)
RewriteRule ^index.php$ / [R=301,L]
RewriteRule ^(.*)/index.php$ /$1/ [R=301,L]
RewriteRule ^index.html$ / [R=301,L]
RewriteRule ^(.*)/index.html$ /$1/ [R=301,L]
RewriteRule ^index.htm$ / [R=301,L]
RewriteRule ^(.*)/index.htm$ /$1/ [R=301,L]
# Вариант 2 (с экранированием точки)
RewriteRule ^index\.php$ / [R=301,L]
RewriteRule ^(.*)/index\.php$ /$1/ [R=301,L]
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
RewriteRule ^index\.htm$ / [R=301,L]
RewriteRule ^(.*)/index\.htm$ /$1/ [R=301,L]
# Вариант 3 (продвинутый с регуляркой "ИЛИ" для разных файлов)
RewriteRule ^index\.(php|htm|html)$ / [R=301,L]
RewriteRule ^(.*)/index\.(php|htm|html)$ /$1/ [R=301,L]
# Дополнительный редирект (не обязательно)
# /cat/index.php/dir/ -> /cat/dir/ (аналогично .html, .htm)
RewriteRule ^(.*)index\.php/(.*)$ /$1$2 [R=301,L]
RewriteRule ^(.*)index\.html/(.*)$ /$1$2 [R=301,L]
RewriteRule ^(.*)index\.htm/(.*)$ /$1$2 [R=301,L]
# ---------------------------------------------------------------
# Редирект page.html -> page/ (указать домен!)
# ---------------------------------------------------------------
RewriteRule (.+)\.html?$ https://www.mysite.ru/$1 [R=301,L]
# ---------------------------------------------------------------
# Редирект HTTP -> HTTPS (ВАРИАНТ_1)
# ---------------------------------------------------------------
RewriteEngine On
RewriteCond %{HTTP:PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
# ---------------------------------------------------------------
# Редирект HTTP -> HTTPS (ВАРИАНТ_2)
# ---------------------------------------------------------------
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# ---------------------------------------------------------------
# Редирект с WWW на без WWW (ВАРИАНТ_1)
# ---------------------------------------------------------------
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mysite\.ru
RewriteRule ^(.*)$ http://.mysite.ru/$1 [R=permanent,L]
# ---------------------------------------------------------------
# Редирект с WWW на без WWW (ВАРИАНТ_2)
# ---------------------------------------------------------------
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^/?(.*) http://%1/$1 [L,R=permanent]
# ---------------------------------------------------------------
# Редирект с без WWW на WWW (ВАРИАНТ_1)
# ---------------------------------------------------------------
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite\.ru
RewriteRule ^(.*)$ http://www.mysite.ru/$1 [R=permanent,L]
# ---------------------------------------------------------------
# Редирект с без WWW на WWW (ВАРИАНТ_2)
# ---------------------------------------------------------------
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*)$ https://www.%1/$1 [R=permanent,L]
# ---------------------------------------------------------------
# Редирект с адреса без слеша на адрес со слешем (ВАРИАНТ_1)
# ---------------------------------------------------------------
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
# ---------------------------------------------------------------
# Редирект с адреса без слеша на адрес со слешем (ВАРИАНТ_2)
# ---------------------------------------------------------------
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [R=301,L]
# ---------------------------------------------------------------
# Редирект для слешей после названия домена domen.ru///// -> domen.ru
# ---------------------------------------------------------------
RewriteCond %{THE_REQUEST} ^([A-Z]{3,9})\ (.*)//([^\ ]*)
RewriteRule ^ %2/%3 [R=301,L]
# ---------------------------------------------------------------
# Редирект для слешей в разделах: domen.ru///cat1///cat2/// -> domen.ru/cat1/cat2/
# ---------------------------------------------------------------
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_URI} ^(.*?)(/{2,})(.*)$
RewriteRule . %1/%3 [R=301,L]
# ---------------------------------------------------------------
# Редирект с каталога на каталог /cat/... -> /catalog/...
# ---------------------------------------------------------------
RewriteRule ^cat/(.+)$ /catalog/$1 [L,R=301]
</IfModule>