301 редирект в .htaccess: как настроить переадресацию
Сразу даю 2 главных правила,
которыми регулярно пользуюсь:
1. 301 редирект со старой страницы домена на новую страницу того же домена (выполняем в файле htaccess):
Redirect 301 /страницаредиректа/ https://адрес-сайта.ru/страница-редиректа/
2. 301 редирект со старого домена на новый домен, главной и всех аналогичных страниц (для сохранения SEO-рейтинга, чтобы каждую страницу не прописывать вручную):
Redirect 301 / https://новый-сайт.ru/
3. Еще одна аналогичная команда при переезде и смене доменного имени:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^старый-сайт\.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www\.старый-сайт\.ru$
RewriteRule (.*)$ https://новый-сайт.ru/$1 [R=301,L]
Почему нельзя игнорировать настройку 301 редирект? Чтобы ответить на данный вопрос, необходимо понять, зачем он нужен и как помогает при продвижении сайта и его оптимизации. Он обеспечивает автоматическое перенаправление с одной страницы на любую выбранную страницу, либо со старого на новый сайт при переезде.
Отсутствие редиректа способствует тому, что создавая зеркало сайта, вы автоматически создаете ему конкурента. Настроив 301 редирект, подобной ситуации можно избежать.
Настройка 301 редиректа
Отличие между сайтами бывают, с точки зрения обычного читателя, и незначительным. Например, отсутствует www – mysite.ru, или он прописывается, как http://mysite.ru. Для обычных пользователей и читателей действительно разницы не существует, и это один и тот же ресурс, но оказывается, что с технической точки зрения это будут абсолютно разные сайты, если не настроить специальный редирект.
Если владелец сайта решил не использовать возможность перенаправления и не настроил редирект, то для поисковых систем http://mysite.ru, mysite.ru и www.mysite.ru – это три сайта, которые просто воруют друг у друга контент. Какие могут быть последствия для этих сайтов? поисковики будут пессимизировать их в выдаче, владелец потеряет рейтинг, клиентов и не сможет в будущем нормально продвигать свой ресурс.
Оптимальный вариант – настроить его в файле .htaccess. Прежде чем это сделать, необходимо его отыскать в корневом каталоге. Если Вы его там не обнаружили, то это не означает, что его там нет. Возможно, он «закопан» в скрытых файлах, в параметрах необходимо установить «показывать скрытые файлы».
Убедившись в отсутствии файла, рекомендуем его создать. Это несложная процедура: в «блокноте» создайте новый файл, дайте ему имя .htaccess.
Найдя интересующий файл, в нем необходимо прописать такие теги (чтобы убедиться, устанавливался или нет модуль «mod_rewrite» на Apache):
<IfModule mod_rewrite.c>
</IfModule>
Если все нормально, и данный модуль установлен, то система будет выполнять все прописанные между тегами задачи.
Чтобы активировать модуль между указанными выше тегами прописывается RewriteEngine on и следующей строчкой обязательно прописываем RewriteBase / (позволит установить базовый URL). В качестве базового адреса выступает, как правило, домен.
В конечном итоге файл будет иметь внешний вид:
1 <IfModule mod_rewrite.c>
2 RewriteEngine on
3 RewriteBase /
4 </IfModule>
Перенаправление с основного зеркала
К примеру, основным сайтом является домен с использованием префикса «www», тогда в этой ситуации нужно будет его добавлять ко всем другим созданным зеркалам:
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
Редирект для разных страниц
Помимо склеивания нескольких зеркал «волшебный» редирект спасает еще, когда крайне важно сохранить вес и имеющиеся позиции конкретной страницы, которая уже проиндексирована, но требуется сменить url.
Заменим в коде первоначально заданную страницу на конечную нужную страницу Redirect301/bilo.html http/mysite.ru/novii.html — это самое простое перенаправление.
1 #BIGIN WordPress
2 <IfModule mod_rewrite.c>
3 RewriteEngine on
4 RewriteBase /
5 Redirect301/bilo.html http/mysite.ru/novii.html
6 </IfModule>
Чтобы перенаправить пользователей с сайта, в доменном имени которого присутствует префикс «www», на вновь созданный нами домен без использования «www», прописываем:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
</IfModule>
Первая строчка – это комментированный текст, он всегда должен начинаться со знака «#». Вторая строчка позволяет проверить наличие модуля mod_rewrite, а третья активирует его. В четвертой строке прописывается директива, проверяющая наличие или отсутствие www, далее срабатывает перенаправление, и последняя строка – окончание проверки наличия выше указанного модуля.
Когда вы создадите все необходимые перенаправления, не забудьте сохранить изменения в документе. Следующий шаг – загрузка файла в каталог, в котором он находился до момента внесения изменений, с заменой старой версии (можно сделать и с неполным перечнем редиректов).
Перенаправление при смене доменного имени
Еще одна ситуация – смена домена. Неважно, какая причина заставила владельца сменить доменное имя, важно то, что он может сделать это без потери достигнутых результатов. Благодаря 301 редиректу удается не только сохранить вес, но и позиции сайта. Некоторые владельцы сайтов используют несколько доменных имен для одного ресурса, и чтобы предотвратить якобы копирование контента и понижения в выдаче потребуется установить и грамотно провести настройку 301редиректа на выбранный основной ваш домен.
RewriteEngine On
RewriteCond %{HTTP_HOST} domainb.ru
RewriteRule (.*) http://domainnew.ru/$1 [R=301,L]
Для главной страницы, если доступна по нескольким адресам
Существуют моменты, когда главная становится доступна пользователям и поисковикам по нескольким различным адресам. Поисковики негативно реагируют на подобное дублирование, понижают сайты, не индексируются страницы, могут применить санкции. Настраиваем 301редирект, чтобы избежать подобных ситуаций.
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://mysait.ru/ [R=301,L]
Обязательная проверка 301 редиректа в действии
Завершив все настройки, прописав необходимые перенаправления, проверяем корректность работы редиректа. Это сделать очень просто, достаточно в строке браузера ввести новый адрес (например, с «www» или без него), и если Вы попадаете, куда и нужно было, то все работает. Убедиться в том, что сработало перенаправление можно, зайдя в Яндекс Вебмастере в «Инструменты», «Проверка ответов сервера», в поле «опрашиваемый URL» вводим проверяемой страницы адрес (с которой проводилось перенаправление). Если система выдает код статуса HTTP«301 Moved Permanently», то вы сделали все корректно! В противном случае будет результат в виде HTTP не «301 Moved Permanently».