От автора: всем привет. Сегодня я расскажу вам, как настроить 301 редирект и что это вообще такое, а также для каких целей он применяется.
Прежде чем непосредственно перейти к практике, нужно сказать, что редирект бывает двух типов. Я думаю, вы понимаете, что это перенаправление с одного адреса на другой. Оно необходимо, когда при переходе по одному адресу нужно отправить человека в другое место.
Редирект бывает временным и постоянным. Постоянный (301-й) передает ссылочный вес, временный (302-й) – нет. Сегодня мы поговорим именно о постоянном редиректе, так как именно его использование считается оптимальным.
Настройка 301 редиректа и случаи из практики
Обычно редирект прописывают в файле .htaccess, но это не единственный способ его создать. Дальше в статье я также покажу вариант, как сделать редирект с помощью php.
Но сначала мы поговорим о том, как он делается через .htaccess. Вообще с помощью редиректа можно избавиться от многих проблем. Одна из них – возможные дубли страниц на сайте, так как он, по сути, доступен по двум адресам: www.site.ru, site.ru.
И для поисковика это разные сайты. Таким образом, каждая страница ваших сайтов имеет как минимум 2 адреса, по которым к ней можно обратиться. Это если вы убрали другие дубли. Чтобы предотвратить подобные вещи, обычно делают редирект с www на вариант без www, так как он более короткий и оптимальный. Таким образом, происходит склейка доменов. Главным зеркалом будет site.ru. Если пользователь сам наберет www.site.ru, то его автоматически перенаправит на вариант без www. Это и позволит избежать дублей, так как теперь поисковая машина будет понимать, что домены связаны. И вот сам код:
1 2 |
RewriteCond %{HTTP_HOST} ^www.site\.com$ [NC] RewriteRule ^(.*)$ //site.com/$1 [R=301,L] |
Естественно, тут нужно заменить адрес сайта на ваш. Стоит отметить, что это не единственный способ избежать проблем с www. Другой вариант – указать в файле robots.txt команду Host: домен без www. Еще один способ – настроить главное зеркало в Яндекс.Вебмастере. Это вообще самый простой вариант для Яндекса.
Отлично, ну а что, если вам нужно сделать редирект с одного домена на другой? В таком случае воспользуйтесь таким кодом:
1 2 |
RewriteCond %{HTTP_HOST} !^www\.site\.com RewriteRule ^(.*)$ //www.site.com/$1 [R=301,L] |
Где в первой строке вам нужно вписать название домена, с которого должно идти перенаправление, а во второй строке вписать адрес, на который собственно происходит перенаправление.
Собственно, для максимально упрощения могу посоветовать вам такой сервис — //www.webconfs.com/htaccess-redirect-generator.php. Это так называемый генератор редиректов.
Перенаправление с помощью php
Также я хочу показать, как делать это с помощью php.
1 2 3 4 5 |
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: //www.site.ru/page.htm"); exit(); ?> |
Этот код перенаправляет пользователя с той страницы, где он вставлен, на site.ru, где будет запрос к странице page.html и ее отображение, если она обнаружена.
Однажды я проходил пару уроков по основам php и там приводился еще один пример с тем, как использовать редирект. Допустим, у вас на сайте есть информация, которую вы готовы показать пользователю только после регистрации или только после ввода ним e-mail. В общем, неважно, что именно за условие вы ставите.
Суть в том, что если условие выполняется (введены правильные данные, введен корректный e-mail и т.д.), то вы перенаправляете его на закрытую страницу и человек получает доступ к информации. Если он ввел данные неправильно, то возвращать его назад на страницу ввода. В общем, вот такой простой пример использования перенаправлений в php.
В каком случае применять 301-й редирект?
Постоянный редирект нужно применять во всех случаях, когда текущий адрес устарел, а информация перенеслась на новое место. Например, вы перенесли статьи с одного раздела в другой или даже с одного сайта на другой. Тут вам и поможет редирект, который даст поисковым роботам понять, что информация переехала на новое место.
Также редирект применяют в том случае, когда есть несколько доменов и один основной. Обычно со всех дополнительных доменов делают редирект на основной. Это особенно актуально для крупных компаний. Например, у вас крупная компания с красивым именем. Но бывают случаи, когда люди делают опечатки. А может просто конкуренты хотят забрать доменное имя, близкое по написанию к вашему, чтобы вести мошеннические действия от вашего лица!
Конечно, полностью от таких людей не убережешься, но многие покупают 3-10 доменов, близкие по названию и доменным зонам к основному адресу, после чего делают их зеркалами. То есть при переходе по любому из этих адресов произойдет перенаправление на главный адрес.
Возможные ошибки
Теперь разберем наиболее частые ошибки при использовании перенаправления. Первая – это любой многоступенчатый редирект. Это когда при переходе по адресу сначала делается перенаправление в одно место, а оттуда – в другое и т.д. Это в принципе странно и подозрительно, потому что обычно используется для всякого рода серых операций. Да и вам, обычному веб-мастеру, едва ли когда-нибудь это понадобится. К тому же подобного рода фокусы сильно снижают скорость загрузки конечной страницы.
Вторая ошибка – так называемый битый редирект, когда перенаправление происходит на страницу, которой не существует (ошибка 404). Либо отдается любая другая ошибка типа 4хх или 5хх. Единственно правильный ответ сервера – 200.
Третья ошибка – ссылки на старые адреса, когда с них уже сделан редирект. Допустим, у вас есть какой-нибудь пост. Например, на тему “как отжиматься 100 раз”. Что-то произошло и вы перенесли адрес статьи, изменив и доработав ее. Чтобы не было ошибок, вы делаете 301-й редирект со старого адреса на новый. Это хорошо, но наиболее оптимальным вариантом будет полная смена всех ссылок на этот пост (на его новый адрес). Короче говоря, лучше всего, если у вас не будет на сайте ссылок на старый адрес.
Чтобы сделать перенаправление со старого адреса на новый, также можете использовать такую конструкцию:
1 2 3 |
Options +FollowSymlinks RewriteEngine on rewriterule ^старый-адрес(.*)$ //название-сайта.com/новый адрес$1 [r=301,nc] |
Наконец, последняя рекомендация – ссылаться на релевантные страницы и каталоги. Это уменьшит подозрительность вашего редиректа, все будет выглядить естественно.
Надеюсь, эта статья помогла вам хоть немного разобраться с тем, как делать 301-й редирект, что это такое и для чего он вообще нужен.