Редирект (301)
301 редирект – це код статусу відповіді сервера за протоколом HTTP.
301 редирект (Permanent Redirect) використовують для постійної переадресації однієї URL-адреси на іншу. Відповідь сервера з кодом 301 говорить про те, що минулий URL більше не актуальний і адреса змінена назавжди.
Даний вид редиректу дає можливість перенести вагу з однієї веб-сторінки на іншу.
У яких випадках використовують 301 редирект
- Переїзд сайту з одного домену на інший.
- Склеювання домену з «www» і без «www».
- Зміна URL-адреси конкретної сторінки.
- Видалення дублів сторінок (повторів).
- Зміна структури веб-сайту.
- Видалення сторінки, що раніше існувала (помилка 404).
Як налаштувати 301 редирект
Налаштування відбувається у файлі .htaccess (редирект на стороні сервера). Деякі 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]
Коли адреса застарілого каталогу відразу після назви сайту (www.site.ua/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();
?›