10 самых известных 301 редиректов, в .htaccess

Редирект 301 — переадресация посетителя на новый домен либо адрес страницы. Этот код ответа сервера значит, сайт и страница навсегда переехали, отныне находятся на ином адресе.

Есть отдельная группа 3хх редиректов. 301, 302 задействуют чаще всего – это словно двойняшки, вроде как и чем то же схожи, однако имеют различия. Тогда как для поискового бота это и вовсе абсолютно разные люди, подобные ответы сервера имеют разное истолкование:

  • 301 Moved Permanently – это неизменный и постоянный редирект. Посредством данного кода посетители извещаются, сайт на постоянной основе был перемещен на другой адрес, старый домен при этом был удален. Необходим для склейки страниц, полноценного переезда на новую CMS, новый сайт.
  • 302 Temporary Redirect – это непостоянный, временный редирект. Информирует о временном переезде страницы, всего сайта. Применим, если на сайте ведутся технические работы.

Порядок отображения кодов в выдаче поисковиков:

  1. В случае редиректа 301 в выдаче поисковиков демонстрируется обновленный URL.
  2. В случае 302 редиректа в выдаче поисковиков остается старый URL страницы, и все же спустя пол года применения 302 редиректа поисковики воспринимают его как вечный 301.

Далее изучим порядок настройки разрешенного 301-го редиректа в .htaccess

В целом, .htaccess — файл расположения HTTP-сервера, вроде Apache. Благодаря ему можно задать огромное число вспомогательных разрешений, показателей интернет сервера. Он распространяет свои права исключительно на каталог, где размещается, а также на дочерние подкаталоги.

Пример редиректа: переадресация с одного сайта на другой

Redirect / www.example.com

При том, что

www.example.com — сайт, на который был переотправлен пользовательский запрос.

Более усложненный пример — если нам нужно выполнить переадресацию со страницы своего сайта на новый. Либо же, к примеру, выполнить переадресацию на главную.

Redirect 301 /kernel grechkopv.ru/ - сервер отдает код 301 о переезде на постоянной основе на новый URL;
Redirect /grechkopv/blog grechkopv.ru/blog - в случае обращения к http://www.example.com/grechkopv/blog откроется grechkopv.ru/blog;
Redirect /grechkopv grechkopv.ru/ - в случае обращения к странице www.example.com/grechkopv, откроется grechkopv.ru/.

Специфика сложных редиректов

Модуль mod_rewrite существует специально для сложных редиректов. Это инструмент трансформации URL-адресов, применяющее регулярное выражение. Для редиректа применимы такие директивы: RewriteEngine, RewriteRule и RewriteCond.

  • RewriteEngine – запускает либо выключает работу трансформационного механизма:
RewriteEngine on | off

Из-за положений on-off запускается, выключается функционирование модуля.

  • RewriteCond — отвечает за определение условий определенного правила, в случае которого случается трансформация. Зачастую после директивы сразу же следуют переменные %{HTTP_HOST}, а также %{REQUEST_URI}, они значат адрес сервера (к примеру, example.ru), сайт, что запрашивается в строчке HTTP-запроса.
  • RewriteRule — следует после нескольких либо единого RewriteCond. Такое правило трансформации URI, что используется исключительно при условии соблюдения RewriteCond.

Пишется директива RewriteRule так:

RewriteRule Шаблон Подстановка [flag]

Тут также важно предоставить трактование применяемой символики регулярного выражения, которые задают образцы строк.

Применяются метасимволы для того чтобы создавать метки в шаблонах, задавать категории символов:

  • $ — символ конца строки;
  • ^ — символ начала строки;
  • \ — экранирующий слэш, благодаря ему можно считывать посредством обыкновенного символа метасимвол, что идет за ним;
  • . — это единичный любой символ;
  • ! — отрицание;
  • () — группирование.

Посредством флагов устанавливаются вспомогательные параметры для такого правила, они перечислены через запятую в квадратных скобках:

  • R — (redirect) может останавливать трансформационный процесс, возвращать результат как редирект на эту страницу браузеру пользователя (302, MOVED TEMPORARY). С такого рода флагом допустимо указывать иной код результата, к примеру R=301 вернет переадресацию с 301 кодом.
  • Nocase (NC) — выключает перепроверку регистра символов;
  • L — (last) способен останавливать процедуру трансформации, поточную ссылка нужно считать окончательной.

Как настроить 301 редирект

Если знать такие правила, можно попробовать своими силами посредством htaccess выполнить редирект.

1. Переадресация .htaccess на новую страницу

Redirect 301 /old-post.html http://new-site.ru/new-post.html

2. Переадресация .htaccess с www на сайт без www

1 RewriteEngine on
2
3 RewriteCond %{HTTP_HOST} !^site.ru$ [NC]
4
5 RewriteRule ^(.*)$ site.ru/$1 [R=301,L]

3. Переадресация .htaccess с сайта без www на сайт с www

1 RewriteEngine on
2
3 RewriteCond %{HTTP_HOST} !^www.site.ru$ [NC]
4
5 RewriteRule ^(.*)$ www.site.ru/$1 [R=301,L]

При этом site.ru — это доменное имя вашего сайта.

4. Переадресация с index.php (html) на главную сайта

1 RewriteEngine on
2
3 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
4
5 RewriteRule ^(.*)index\.(php|html|htm)$ $1 [R=301,L]

5. Переадресация со слешем на сайт без слеша

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

6. Переадресация со страничек без слеша на страницы со слешем

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

7. Переадресация страниц одного домена на главную нового домена

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

8. Переадресация с http на сайт https посредством. htaccess

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

9. Переадресация с https на сайт http

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

10. Устранение дублирования страниц

В случае, когда вы увидели, что к адресу основной страницы добавляется что-то типа &crw=123 456 либо sa=123 456, следует поменять буквенную часть в этом коде

1 RewriteCond %{REQUEST_URI} ^(.*)\ sa=
2 RewriteRule ^(.*)\ sa=(.*)$ $1 [R=301,L]

Пример

Как через 301-й редирект добиться того, чтобы запрос site.ru/category/art1/zapis/ выдавал в адресной строке site.ru/zapis/, иными словами /category/art1 удалялась бы из строки, и все же после этого демонстрировалось содержимое site.ru/category/art1/zapis/?

Запросто:

1 RewriteCond %{ENV:REDIRECT_STATUS} ^$
2 RewriteRule ^category/art1/zapis/$ http://%{HTTP_HOST}/zapis/ [R=301,L]
3 RewriteRule ^zapis/$ /category/art1/zapis/ [L]

Не секрет, что mod_rewrit на apache на постоянной основе изучает перечень правил, пока URL допустимо поменять хоть каким то образом.

Чтобы ограничивать цикл реализации правил одинаковым трактованием, допустимо применять конструкцию из первой строчки. Благодаря ей apache передается статус, удалось ли выполнить переадресацию: либо нет, а если да, стоит пропустить последующие правила.

Следующая строчка превращает 301-ю переадресацию с www.site.ru/category/art1/zapis/ на www.site.ru/zapis/.

Строка №3 информирует сервер, если адрес типа

www.site.ru/zapis/, нужно продемонстрировать то, что имеется по адресу
www.site.ru/category/art1/zapis/.

  1. Правило «от меньшему к большему»: размещаете переадресацию от частных к самым глобальным. Это значит, что редирект с одной страницы на другую будет выше, нежели редирект с без www на сайт www.
  2. Не допускайте последовательных тройных, двойных переадресаций.
  3. Протестируйте статусы ответа свервера, HTTP заголовки, дабы удостоверится в корректности функционирования переадресации.

В завершение хочется отметить основные условия, согласно которых необходимо и не обязательно применять .htaccess редирект.

В каких случаях редирект нужен:

  1. Если Вы перебрались на новый домен: не желаете терять свою клиентскую базу, кроме того существует потребность в передаче на новый сайт старого веса.
  2. Вам нужно склеить зеркала: вы собственник 2-х доменных имён с различными вариациями написания ТМ, а потому вы пересылаете посетителей на обновленный сайт.
  3. Если страница поменяла адрес: была преображена структура сайта, вы желаете не допустить возникновение беспорядка.
  4. Если нужно устранить копии сайта, дубли страниц.

Когда лучше не пользоваться редиректом?

  1. Если Вы на время перемещаетесь на другую страницу: в таких целях лучше использовать 307 и 302 коды.
  2. Если вы переезжаете по причине проблем с доменом: из-за штрафов, фильтров, банов.
Прокачай ПФ. Читай больше про SEO
0
С уважением, Павел Гречко

В SEO с 2006 года. Продвигаю коммерческие сайты в Яндекс и Google.

Лью целевой трафф на коммерческие сайты: интернет-магазины, сайты услуг, сайты компаний.
Использую каналы: SEO, DIRECT, ADWORDS, TARGET

Даю бесплатные консультации, вопросы задавайте прямо в комментариях.
Мои услуги

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *