301 редирект производится различными способами и через разные конфигурации. В нашей статье мы рассмотрим как это сделать через .htaccess. Во время работы над сайтом, часто возникает потребность обратиться к данному файлу. Но разобраться в нем непросто, поэтому для Вашего удобства мы прописали подробный алгоритм работы.
	 Чтобы начать работу, создайте файл или откройте уже существующий .htacces в каталоге Вашего сайта.
Для того, чтобы произвести действие, пропишите в файле нужные строки:
Редирект со старого домена на новый
Чтобы произвести действие, добавьте ниже указанные строки в .htaccess сайта, с которого будет произведен редирект:
RewriteEngine On
RewriteCond %{HTTP_HOST} old-site.ru
RewriteRule (.*) http://new-site.ru/$1 [R=301,L]
где:
old-site.ru — откуда происходит редирект;
new-site.ru — куда происходит редирект.
Редирект на http:// с https://
RewriteEngine On 
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
	где site.ru — имя домена.
Редирект для определенного IP
Пропишите в .htaccess строки:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} 123.123.123.123
RewriteRule ^(.*)$ http://site.ru [R=301,L]
где site.ru — имя домена.
 Редирект на домен с WWW с домена без WWW
 
 В .htaccess пропишите строки: RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
где site.ru — имя домена.
Редирект на домен без WWW с домена с WWW
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
где site.ru — имя домена.
 Редирект для Linux  на https:// с http://  
 
 Пропишите код в .htaccess, как в примере: - Редирект для всех страниц сайта на https:// с http://
	
 
вариант 1
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
	 либо, если первичный вариант не сработает, попробуйте прибегнуть к второму:
вариант 2
RewriteEngine On
RewriteCond %{HTTPS} =off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
если ни один вариант не помог и происходит циклическая переадресация:
вариант 3
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
вариант 4
RewriteEngine On 
RewriteCond %{ENV:HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- Редирект на https только выбранной страницы
 
вариант 1
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
или
вариант 2
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 
- Редирект на https всех страниц, кроме одной
 
Пример с настройкой редиректа для страницы test.php.
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/test.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
- Редирект с главной страницы, кроме остальных страниц сайта
 
Пропишите строки в файл .htaccess сайта, откуда будет производиться редирект:
RewriteEngine On RewriteRule ^$ https://site.ru [R=301,L]
