Посібник з налаштування 301 редиректів у файлах htaccess і web.config
Редирект 301 (Moved Permanently 301) – цей код редиректа позначає, що сторінка або сайт були переміщені на нову адресу і будуть там завжди. Водночас користувачі будуть направлятися на нову адресу, а пошуковики ще будуть індексувати стару. У цьому випадку контрольна вага передається в повному обсязі.
Редирект через htaccess
Щоб його виконати, вам знадобиться створити в папці сайту файл .htaccess. Якщо ви використовуєте CMS WordPress або Joomla, то, найімовірніше, цей файл у вас вже є, і вам потрібно просто відредагувати його.
Нижче надані налаштування, які необхідно прописати в файл .htaccess для створення перенаправлення.
Редирект сайту з http на https:
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Редирект зі старої статичної сторінки на нову сторінку:
RewriteEngine On
RewriteRule ^baza-znanij/nastrojka-301-redirekta/?$ /newpage [R=301,L]
Редирект на головну сторінку:
RewriteEngine On
RewriteRule ^baza-znanij/nastrojka-301-redirekta/?$ / [R=301,L]
Редирект з головної на внутрішню сторінку:
RewriteEngine On
RewriteRule ^$ /baza-znanij/nastrojka-301-redirekta [R=301,L]
Редирект зі сторінок сайту з WWW на сторінки без WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,L]
Редирект зі сторінок сайту без WWW на сторінки з WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Наступний приклад дозволяє прибрати слеш в кінці URL
Редирект 301 зі сторінок зі слешем в кінці на сторінки без нього:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
А тут додаємо слеш в кінці URL:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Редирект URL з параметром на будь-яку внутрішню сторінку сайту:
(Наприклад, зі сторінки http://www.domain.ua/news.php?category=1 на http://www.site.ua/news.php?category=2 (тут параметр category=)):
RewriteEngine On
RewriteCond %{QUERY_STRING} category=1
RewriteRule ^news.php http://www.domain.ua/news.php?category=2 [R=301,L]
Редирект URL з параметром на головну сторінку сайту:
(Наприклад, http://domain.ua/index.php?show_section=12 на головну сторінку http://domain.ua/ (тут параметр show_section=12)):
RewriteEngine On
RewriteCond %{QUERY_STRING} show_section=12
RewriteRule ^index.php http://site.ua/? [R=301,L]
Редирект зі старого домену на новий (прописуємо в .htaccess старого сайту):
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domainold\.ua$ [NC]
RewriteRule ^(.*)$ http://domainnew.ua/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^domainold\.ua$ [NC]
RewriteRule ^(.*)$ http://domainnew.ua/$1 [L,R=301]
Редирект з домену .УКР на домен .UA
Тут важливо знати, що зона .УКР перетвориться в .xn--j1amh, а сама назва кириличного домену в відповідний код (punycode) на латиниці xn-….
RewriteCond %{HTTP_HOST} ^xn-...\.xn--j1amh$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.ua/$1 [R=301,L]
301 редирект каталогу:
RewriteRule ^old-dir/(.*) /new-dir/$1 [R=301,L]
Коли є 2 сайти з однаковою інформацією, але водночас доступні за різними адресами (сайти-дублі). У цих сайтів однаковий robots.txt, sitemap.xml і один на двох .htaccess. Є варіант 301 редиректу з неосновного такого сайту (domain2) на основний (domain1):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2.ua$ [OR,NC]
RewriteCond %{HTTP_HOST} ^www.domain2.ua$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.*
RewriteRule ^(.*)$ http://www.domain1.ua/$1 [R=301,L]
Вставка включає в себе всі редиректи зі сторінок index | default з розширеннями htm | html | php | asp | aspx на головну:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET\ .*/(index|default)\.(htm|html|php|asp|aspx)\ HTTP
RewriteRule ^(.*)(index|default)\.(htm|html|php|asp|aspx)$ http://www.site.ua/$1 [R=301,L]
Редирект через web.config
Цей файл зазвичай розташований у папці сайту. Якщо його немає, то вам потрібно такий файл створити.
Приклад редиректу зі сторінок без WWW на сторінки з WWW у web.config для IIS:
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to WWW" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^seowind.ua$" />
</conditions>
<action type="Redirect" url="http://www.seowind.ua/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
Приклад редиректу зі сторінки default.aspx на головну в web.config для IIS:
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1">
<match url="^default\.aspx" ignoreCase="false" />
<conditions>
<add input="{QUERY_STRING}" pattern="^$" ignoreCase="false" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="http://www.seowind.ua/" />
</rule>
</rules>
</rewrite>
Наш телеграм
з важливими анонсами, розіграшами й мемами
Приєднатися