301 редирект через файл htaccessПриветствую друзья. Продолжая серию статей технического характера, я хочу рассказать вам о таком важнейшем параметре для любого сайта как 301 редирект. Давайте дадим объяснение этому термину, и я постараюсь самым подробным образом рассказать вам о нем. Итак, редирект – это специальный метод перенаправления пользователей и роботов поисковых систем на другой URL, отличный от того, который они запросили ранее. Приведу простой пример, ваш читатель попадает на страницу /catalog/page1.html, а его автоматически переадресовывает на страницу /catalog/page2.html, таким образом срабатывает 301 редирект и в конечном результате вы предоставляете пользователю вашего сайта, нужную информацию.

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

1) Правильное определение главного зеркала сайта с приставкой www или же без нее. Крайне важный параметр, о котором я рассказывал в своих предыдущих статьях. Дальше в статье я расскажу, как настроить данный параметр.

2) При смене домена сайта, благодаря правильной настройке редиректа, можно сохранить такие показатели как ТИЦ и PR, а также все позиции по ключевым запросам, которые были на старом домене.

3) В случаи изменения адреса конкретной страницы на вашем сайте, можно настроить переадресацию на новый адрес, вместо старого неработающего.

4) Убрать дубли страниц с такими параметрами как feed, replytocom, trackback и т.д.

Как видим из вышеизложенного списка, перечь полезных функций которые можно выполнить с помощью редиректа достаточно большой (я привел лишь основные). Теперь давайте от теории перейдем к практике и научимся правильно составлять файл htaccess который и есть главным звеном в перенаправлении.

Виды редиректов через файл htaccess

Откройте файл htaccess (для сервера Apache), который располагается в корне вашего сайта (если такого файла нет, то создайте его).

месторасположение файла htaccess

В этом файле и будут проводится все дальнейшие настройки для правильной переадресации страниц и доменов сайта.
Для начала, давайте рассмотрим процесс указания главного зеркала сайта с приставкой www и без нее.

Перенаправление домена с www на без-www

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

Перенаправление домена без приставки www на www

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

Манипуляции со слешем в конце урла

Очень часто возникают ситуации, когда одна и та же страница на сайте, доступна по таким адресам:

http://site.ru/catalog/page

и

http://site.ru/catalog/page/

разница лишь в том, что в первом случае в конце нет слеша (косой линии), а во втором он присутствует. Это одна из самых грубых ошибок, ведь в таком случаи для каждой страницы будет создаваться дубль, и поисковые системы, будут считать эти адреса абсолютно разными, но с одинаковым содержимым.

Чтобы исключить такой вариант, и оставить урлы страниц без слеша в конце, вставьте вот такой код в файл htaccess:

RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

если вы хотите, чтобы слеш присутствовал в конце каждого урла используйте такой код:

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

Отдельное перенаправление для дублей главной страницы

Бывают моменты, что главная страница вашего сайта, доступна по нескольким адресам – index.php, home.php, default.php и т.д. (окончание может быть и другое – html, htm и т.д.), что также создает дополнительные дубли, но только для главной страницы.

Для исправления этой ошибки, вставьте в уже известный вам файл, такой код:

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

Отнеситесь к этим 3-м перенаправлениям очень серьезно, ведь от этих настроек напрямую зависит успех вашего проекта. Не допускайте ситуации, чтобы ресурс был доступен и с приставкой www и без нее, главная страница имела несколько адресов, а отдельные записи были доступны как со слешем так и без него! Этого не должно быть!

301 редирект для переадресации страниц старого домена на новый

Redirect 301 / http://www.newsite.com/

В случаи применения этого правила все страницы старого сайта будут перенаправлены на новый домен.

Для переадресации конкретной страницы старого сайта на страницу нового сайта вставьте в файл .htaccess следующий код:

Redirect 301 /oldsite/page.html http://www.newsite.com/page2.html

Также можно воспользоваться альтернативным вариантом перенаправления всех страниц старого сайта на новый:

RedirectPermanent / http://www.newsite.com/

А вот код для перенаправления со старого каталога в новый:

RedirectPermanent /old-catalog http://www.newsite.com/new-catalog/

Перенаправление старого домена на новый:

RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Есть случаи, когда необходимо, чтобы страница типа test.htm перенаправлялась на страницу test.html. Это решается вот таким кодом:

RewriteEngine on
RewriteBase /
RewriteRule ^test\.htm$ test.html [R=permanent]

Если необходимо заменить все расширения на сайте, тогда редирект htaccess будет таким:

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.htm$ $1.html [R=permanent]

Я привел лишь самые распространенные способы перенаправлений, которых для решения стандартных задач будет вполне достаточно. Если же вам нужно решить другие задачи, связанные с редиректом (помимо тех, что я описал в статье), советую обращаться к профессионалам, ведь привести сайт в нерабочее состояние, неправильными настройками в файле htaccess очень просто.

Хотя в принципе, базовые правила просты в понимании, и можно пробовать настраивать 301 редирект через htaccess под свои цели (если они не слишком сложные).

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

Проверку можно осуществить здесь. Интересуемая вас страница должна отдавать 301 ответ сервера.

проверка ответа сервера

Вот пример переадресации на моем блоге — к любому адресу размещенной статьи пропишите приставку feed/, после перехода вас попросту перекинет на тот же адрес. Таким образом, я борюсь с дублями страниц на блоге.

Сервисы генерации базовых редиректов:

http://www.webconfs.com/htaccess-redirect-generator.php

http://www.rapidtables.com/web/tools/redirect-generator.htm

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

На этом все, всем пока!

С уважением, Александр Мельничук.

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(3 голоса, в среднем: 5 из 5)