Что такое 301 редирект
Ниже приведено общее определение
Код состояния HTTP 301 или Moved Permanently (с англ. — «Перемещено навсегда») — стандартный код ответа HTTP, получаемый в ответ от сервера в ситуации, когда запрошенный ресурс был на постоянной основе перемещён в новое месторасположение, и указывающий на то, что текущие ссылки, использующие данный URL, должны быть обновлены. Адрес нового месторасположения ресурса указывается в поле Location получаемого в ответ заголовка пакета протокола HTTP.
Наиболее популярные правила
Дальше по статье предоставлены более используемые правила настройки файла htaccess для 301 редиректа. Перед тем как размещать все правила нужно чтобы перед ними присутствовало 2 следующие строки:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain\.by$ [NC]
RewriteRule ^(.*)$ http://domain.by/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.domain\.by$ [NC]
RewriteRule ^(.*)$ http://domain.by/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Если вышеперечисленные варианты не помогли и возникает циклическая переадресация
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]
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule (.*) https://%{HTTP_HOST} [R=301,L]
RewriteCond expr "%{tolower:%{REQUEST_URI}} =~ /(.*)/"
RewriteRule [A-Z] %1 [R=301,L]