Документы для веб-разработчиков

<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>