Одна из самых распространенных задач в сайтостроении и особенно в SEO является правильная настройка редиректов. 301 редирект является основным и единственным перенаправлением, которое используется при склейке дублей различных страниц, при переезде на новое доменное имя и при переходе на https.
Основые способы реализации 301 редиректа
1. Средствами PHP
header("HTTP/1.1 301 Moved Permanently"); header("Location: http://site.com/new.html"); exit();
2. Через .htaccess
Redirect 301 /old.html http://site.com/new.html
3. В конфигах Nginx
server { if ( $request_filename ~ old/ ) { rewrite ^ http://site.com/new.html permanent; } }
Далее рассмотрим часто-используемые редиректы через .htaccess. В случае необходимости их несложно перевести на PHP, Nginx либо другой web-сервер.
Переезд на новый домен
RewriteCond %{HTTP_HOST} oldsite.com RewriteRule (.*) http://newsite.com/$1 [R=301,L]
Редирект с «без www» на www
RewriteCond %{HTTP_HOST} !^(www.) [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Редирект с www на «без www»
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Удаление слеша в конце адреса
RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ [NC] RewriteRule ^(.*)(/)$ $1 [L,R=301]
Добавление слеша в конец адреса
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Редирект с http на https
1-ый способ
RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
2-ой способ
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
3-ий способ
RewriteCond %{HTTP:X-HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
4-ый способ
RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
5-ый способ
RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
6-ой способ
RewriteCond %{HTTP:SSL} !1 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
На этом все, более подробные редиректы необходимые для SEO разберем в отдельной статье. Остались вопросы или дополнения — пишите в комментариях.