Как реализовать 301-редирект в файле htaccess. Правила и примеры настройки

CMS.BY

Что такое 301 редирект

Ниже приведено общее определение

Код состояния HTTP 301 или Moved Permanently (с англ. — «Перемещено навсегда») — стандартный код ответа HTTP, получаемый в ответ от сервера в ситуации, когда запрошенный ресурс был на постоянной основе перемещён в новое месторасположение, и указывающий на то, что текущие ссылки, использующие данный URL, должны быть обновлены. Адрес нового месторасположения ресурса указывается в поле Location получаемого в ответ заголовка пакета протокола HTTP.

Наиболее популярные правила

Дальше по статье предоставлены более используемые правила настройки файла htaccess для 301 редиректа. Перед тем как размещать все правила нужно чтобы перед ними присутствовало 2 следующие строки:

Options +FollowSymLinks
RewriteEngine On

Редирект с домена с WWW на без
RewriteCond %{HTTP_HOST} ^www.domain\.by$ [NC]
RewriteRule ^(.*)$ http://domain.by/$1 [R=301,L]

Для варианта с протоколом HTTPS
RewriteCond %{HTTP_HOST} ^www.domain\.by$ [NC]
RewriteRule ^(.*)$ http://domain.by/$1 [R=301,L]

Редирект с протокола HTTP на протокол HTTPS
Вариант №1
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Вариант №2
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Вариант №3
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вариант №4

Если вышеперечисленные варианты не помогли и возникает циклическая переадресация

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

Обычная переадресация с одной страницы на другую
Redirect 301 /help.html https://www.domain.by/help-me.php
Редирект который убирает дублирующие /
RewriteCond %{THE_REQUEST} ([^\s]*)\/{2,}(\?[^\s]*)?
RewriteRule (.*) %1 [R=301,L]
Редирект с index.php
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule (.*) https://%{HTTP_HOST} [R=301,L]
Редирект с заглавных букв
RewriteCond expr "%{tolower:%{REQUEST_URI}} =~ /(.*)/"
RewriteRule [A-Z] %1 [R=301,L]
Редакция CMS.BY

Редакция CMS.BY

С нами Мир познавать проще и надёжнее

shape

У Вас остались вопросы? Обязательно обратитесь к нам
Мы проконсультируем Вас по любому вопросу в сфере IT

Оставить заявку