301 редиректы в .htaccess с примерами: от простых склеек до редиректов с get-параметрами - Webline Blog

301 редиректы с примерами

Поисковая оптимизация

301 редирект — это постоянное перенаправление пользователя и поискового бота на другой адрес, отличный от изначально запрашиваемого. 

Содержание
  1. Для чего нужен 301 редирект?
  2. Настройка 301 редиректов в файле .htaccess
  3. 301 редирект с одной страницы на другую
  4. Склейка основного зеркала сайта при добавлении www (Вариант 1)
  5. Склейка основного зеркала сайта при добавлении www (Вариант 2)
  6. Склейка основного зеркала сайта при удалении www
  7. Склейка верхнего регистра с нижним
  8. 301 редирект со страниц со слешем на страницы без слеша (весь сайт)
  9. 301 редирект со страниц без слеша на страницы со слешем (весь сайт)
  10. 301 редирект с http на https для всего сайта
  11. 301 редирект с https на http для всего сайта
  12. Массовая склейка. 301 редирект для index.php, index.html или index.htm
  13. 301 редирект с домена на домен
  14. 301 редирект только адреса site.com/index.php (без GET-параметров) на основное зеркало site.com
  15. 301 редирект для конкретного файла, а не всей папки 
  16. Редирект со всех файлов домена, кроме папки администратора bitrix 
  17. 301 редирект с поддомена на основной домен
  18. 301 редирект каждой страницы одного домена на такой же адрес другого URL
  19. 301 редирект всех страниц одного домена на главную страницу другого домена
  20. 301 редирект со страниц с пробелами в URL на главную страницу домена, пример /images/fckedit/ABEL%20TASMAN%20National%20Park.jpg
  21. 301 редиректы в зависимости от GET-параметра: примеры
  22. Пример №1
  23. Пример №2
  24. Пример №3
  25. Пример №4
  26. Пример №5 
  27. Пример №6
  28. Пример №7
  29. Пример №8
  30. Пример №9
  31. Пример №10
  32. 301 редиректы кириллическими URL-адресами
  33. Сервисы для проверки редиректов 

Для чего нужен 301 редирект?

301 редирект — эффективный способ сохранить трафик, позиции, ссылочный вес страниц сайта при:

  1. удалении дубликатов страниц при изменении структуры сайта или когда страница становится неактуальной;
  2. переезде сайта, склейке страниц, находящихся на разных доменах;
  3. склейке основного зеркала сайта (www, https, index.php/index.html и т. д.).

Настройка 301 редиректов в файле .htaccess

Правило: все 301 редиректы в файле .htaccess лучше размещать после этих записей:

Options +FollowSymLinks
RewriteEngine On

301 редирект с одной страницы на другую

Вариант №1

Redirect 301 /page-1/ http://site.com/page-2/

Вариант №2 с помощью регулярного выражения:

RewriteCond %{REQUEST_URI} ^/page/$
RewriteRule ^.*$ http://site.com/page-2/? [R=301,L]

Склейка основного зеркала сайта при добавлении www (Вариант 1)

RewriteCond %{HTTP_HOST} ^site\.com$ [NC]
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Склейка основного зеркала сайта при добавлении www (Вариант 2)

RewriteCond %{HTTP_HOST} ^site.com [NC]
RewriteRule ^(.*)$ http://www.site.com/$1 [L,R=301,NC]

Склейка основного зеркала сайта при удалении www

RewriteCond %{HTTP_HOST} ^www.site\.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

Склейка верхнего регистра с нижним

RewriteCond expr «tolower(%{REQUEST_URI}) =~ /(.+)/»
RewriteRule [A-Z] %1 [R=301,L]

301 редирект со страниц со слешем на страницы без слеша (весь сайт)

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L] 

301 редирект со страниц без слеша на страницы со слешем (весь сайт)

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

301 редирект с http на https для всего сайта

Вариант №1

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Вариант №2

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]

Вариант №3

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Вариант №4

RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]

301 редирект с https на http для всего сайта

Вариант №1

RewriteCond %{HTTPS} «on»
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

Вариант №2

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Массовая склейка. 301 редирект для index.php, index.html или index.htm

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ 
RewriteRule ^(.*)index\.(php|html|htm)$ http://site.com/$1 [R=301,L]

301 редирект с домена на домен

RewriteCond %{HTTP_HOST} ^first-site\.com$ [NC]
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]

301 редирект только адреса site.com/index.php (без GET-параметров) на основное зеркало site.com

RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)$ http://site.com/? [R=301,L]

301 редирект для конкретного файла, а не всей папки 

Если требуется настроить редирект только для адреса http://www.site.com/files/, но при этом надо, чтобы страница http://www.site.com/files/index.php?IBLOCK_ID=16 открывалась по старому адресу, необходимо использовать символ $ в правиле.

RewriteRule ^files/$ http://www.site.com/new-folder/ [R=301,L]

Редирект со всех файлов домена, кроме папки администратора bitrix 

RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301]
RewriteRule ^(.*)$ http://www.site.com/folder/ [L,R=301]

301 редирект с поддомена на основной домен

Вариант №1

RewriteCond %{HTTP_HOST} ^poddomen.site.com$ [NC]
RewriteRule ^(.*)$ http://site.com%{REQUEST_URI} [R=301,NC,L,QSA]

Вариант №2

RewriteEngine on
RewriteCond %{HTTP_HOST} ^ht.site-name.com.ua$
RewriteRule ^/?$ «https\:\/\/site-name.com.ua\/» [R=301,L]

301 редирект каждой страницы одного домена на такой же адрес другого URL

RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://site.com/$1 [L,R=301]

301 редирект всех страниц одного домена на главную страницу другого домена

RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://site.com/ [L,R=301]

301 редирект со страниц с пробелами в URL на главную страницу домена, пример /images/fckedit/ABEL%20TASMAN%20National%20Park.jpg

Redirect 301 «/images/fckedit/ABEL TASMAN National Park.jpg» /

301 редиректы в зависимости от GET-параметра: примеры

Пример №1

site.com/page.html?ref=text → site.com/page.html

RewriteCond %{QUERY_STRING} ^ref=text$
RewriteRule ^(.*)$ /$1? [R=301,L]

Пример №2

site.com/page?file=text&doc=next  →  site.com/page?doc=next

RewriteCond %{QUERY_STRING} file=text&doc=(.*)
RewriteRule ^(.*)$ /$1?doc=%1 [L]

Пример №3

site.com/component/content/?information=file → на главную страницу site.com

RewriteCond %{QUERY_STRING} ^information=file $ [NC]
RewriteRule ^component/content/$ /? [R=301,L]

Пример №4

С site.com/index.php?idc=4&marea=6 → на главную страницу site.com

RewriteCond %{QUERY_STRING} ^idc=4&marea=6$ [NC]
RewriteRule ^index\.php$ /? [R=301,L]

Пример №5 

С site.com/index.php?route=feed/latest_products_rss&currency=GRN → на главную страницу site.com

RewriteCond %{QUERY_STRING} ^route=
RewriteRule ^.*$ http://site.com/? [R=301,L]

Пример №6

С site.com/information/information?information_id=64 → на главную страницу site.com

RewriteCond %{QUERY_STRING} information_id=64$
RewriteRule ^information/information$ /? [L,R=301]

Пример №7

Регулярка со всех GET параметров главной страницы, на главную без параметров

RewriteCond %{THE_REQUEST} » /\?»
RewriteRule ^ /? [R=301,L]

Пример №8

Регулярка с GET-параметром на главную (http://site.com/ru/news/id=16)

RewriteRule ^ru/news(/.*)?$ / [L,R=301,NC]

Пример №9

Регулярка с GET-параметром на главную:

http://site.com.ua/bukovel/?_utl_t=vb
http://site.com.ua/ru/bukovel/?_utl_t=vb
http://site.com.ua/en/bukovel/?_utl_t=vb

RewriteCond %{QUERY_STRING} ^_utl_t= [NC]
RewriteRule (.) $1? [R=301,L]

RewriteRule ^en(/.)?$ / [L,R=301,NC]
RewriteRule ^ru(/.*)?$ / [L,R=301,NC]

Пример №10

Регулярка с GET-параметром на главную

http://site.com.ua/index.php/2013-04-22-17-34-15/2013-04-23-10-31-15/9-uncategorised/144-%D1%80%D0%B0%D1%81%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D1%80%D0%B5%D0%B9%D1%81%D0%BE%D0%B2-%D0%B0%D0%BB%D0%BC%D0%B0%D1%82%D1%8B-%D0%B1%D1%83%D1%80%D0%B3%D0%B0%D1%81-%D0%B1%D0%BE%D0%BB%D0%B3%D0%B0%D1%80%D0%B8%D1%8F-%D0%B0%D0%BB%D0%BC%D0%B0%D1%82%D1%8B-2013.html

RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)$ https://site.com.ua/? [R=301,L]

301 редиректы кириллическими URL-адресами

1. Преобразование кириллических символов в Punycode. Пример сервиса, который может решить эту задачу: https://hb.by/punycode-converter.aspx

2. Если не работает через Punycode, то можно сделать регулярным выражением, например:

RewriteRule ^услуги/оценка-недвижимости/оценка-квартиры/$ https://site.com/ocenka-kvartiri [R=301,L]

Надо добавлять в начало .htaccess и сохранять файл в кодировке UTF-8 без BOM.

3. Еще один вариант — поместить кириллические URL-адреса в кавычки:

Redirect 301 “оценка/жилой-недвижимости” http://site.com/

Сервисы для проверки редиректов 

Одна из главных ошибок —проверка настроенных редиректов в браузере, когда может подтягиваться кэш, из-за которого изменения не вступают в силу. Лучше использовать специальные сервисы, их довольно много. Введите в поисковик запрос “проверка редиректов онлайн” и перейдите на первые сайты, например:

  1. https://www.ukraine.com.ua/info/tools/redirect/
  2. https://4web.su/s_redirect/ 
  3. https://www.websiteplanet.com/uk/webtools/redirected/ 

Важно: если что-то не сработало, лучше проверить с помощью нескольких сервисов. Бывают случаи, когда какой-то из сервисов сразу не отдает правильный результат. 

Если у вас возникли проблемы с редиректами, внимательно прочитайте статью еще раз 🙂 Или оставляйте комментарий, а мы постараемся помочь вам в этом. 

Подпишись на рассылку дайджеста новостей от Webline Promotion

Оцените статью
Webline Blog
Добавить комментарий