Одна из самых распространенных задач в сайтостроении и особенно в 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 разберем в отдельной статье. Остались вопросы или дополнения — пишите в комментариях.