Редирект (301)
301 редирект — это код статуса ответа сервера по протоколу HTTP.
301 редирект (Permanent Redirect) используют для постоянной переадресации одного URL-адреса на другой. Ответ сервера с кодом 301 говорит о том, что прошлый URL больше не актуален и адрес изменен навсегда.
Данный вид редиректа дает возможность перенести ссылочный вес с одной веб-страницы на другую.
В каких случаях используют 301 редирект
- Переезд сайта с одного домена на другой.
- Склейке домена с «www» и без «www».
- Смене URL конкретной страницы.
- Удаление дублей страниц (повторов).
- Смена структуры сайта.
- Удаление ранее существовавшей страницы (ошибка 404).
Как настроить 301 редирект
Настройка происходит в файле .htacces (редирект на стороне сервера). Некоторые CMS системы позволяют использовать php перенаправление (редирект на уровне страницы).
В файле .htaccess все 301 редиректы размещают после строк
Options +FollowSymLinks
RewriteEngine On
Редирект с одной страницы на другую
Redirect 301 /oldpage/ https://site.uа/newpage/
или
RewriteCond %{REQUEST_URI} ^/oldpage/$
RewriteRule ^.*$ https://site.uа/newpage/? [R=301,L]
Редирект без «www» на сайт с «www»
RewriteCond %{HTTP_HOST} ^site.uа$ [NC]
RewriteRule ^(.*)$ https://www.site.uа/$1 [R=301,L]
Редирект с «www» на сайт без «www»
RewriteCond %{HTTP_HOST} ^www.site.uа$ [NC]
RewriteRule ^(.*)$ http://site.uа/$1 [R=301,L]
Редирект на страницы со слешем в конце
RewriteCond %{REQUEST_URI} !?
RewriteCond %{REQUEST_URI} !&
RewriteCond %{REQUEST_URI} !=
RewriteCond %{REQUEST_URI} !.
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*[^/])$ /$1/ [R=301,L]
Редирект на страницы без слеша в конце
RewriteCond %{REQUEST_URI} !?
RewriteCond %{REQUEST_URI} !&
RewriteCond %{REQUEST_URI} !=
RewriteCond %{REQUEST_URI} !.
RewriteCond %{REQUEST_URI} ![^/]$
RewriteRule ^(.*)/$ /$1 [R=301,L]
Удаление нескольких слешей
RewriteCond %{REQUEST_URI} ^(.)//(.)$
RewriteRule . %1/%2 [R=301,L]
Редирект с http на https
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
или
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
или
RewriteCond %{HTTPS} =on
RewriteRule (.) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
или
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://site.uа/$1 [R=301,L]
Редирект с https на http
RewriteCond %{HTTPS} «on»
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
или
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
Редирект каталога
RewriteRule ^(.)/oldcatalog/(.)$ $1/newcatalog/$2 [R=301,L]
Когда адрес устаревшего каталога сразу после нaзвaния сайта (www.site.uа/oldcatalog/), нужно использовать:
RewriteRule oldcatalog /(.*) / oldcatalog /$1 [R=301,L]
Редирект с домена на домен
RewriteCond %{HTTP_HOST} ^oldsite.ua$ [NC]
RewriteRule ^(.*)$ https://site.uа/$1 [R=301,L]
Перенаправление через PHP
‹?php
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: https://site.uа /newpage/”);
exit();
?›