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]