Как сделать 301 редирект правильно
Содержание статьи
Сразу выскажусь. Не лезьте делать редирект в htaccess, если не шарите в этом! Пусть это сделает программист. 301 редирект — это вам не шутки вышучивать.
https://www.youtube.com/watch?v=J-6QDzWHses
Один мой знакомый оптимизатор как-то раз неправильно отредактировал htaccess, и весь сайт клиента нахрен полетел. Спас хостер, который делал бекап.
Что такое 301 редирект?
Редирект 301 (Permanent Redirect) – это перенаправление, которое направляет посетителя с одного адреса на другой, при этом первый адрес отдает код ответа сервера 301. То есть если со страницы znet.ru/zelenyj-slonik стоит 301 редирект на страницу znet.ru/green-elefant, то пользователь, зашедший на первую страницу, даже не увидит ничего с ней, а попадет сразу на вторую страницу, и в адресной строке у него будет адрес именно второй страницы. А старая страница будет отдавать код ответа сервера 301.
Также бывают и другие редиректы, например 302 и 303 редирект. Вот чем они отличаются:
- Permanent Redirect (301) означает, что страница перенесена навсегда, на постоянной основе;
- Temporary Redirect (302, 303 и некоторые другие) означает, что страница перенесена временно.
По временному редиректу новой странице не «подклеится» никаких показателей от старой страницы, и соответственно никаких бонусов в продвижении для этой новой страницы не будет. А вот по постоянному кое-что передается, вот почему сеошники его и любят.
Что передается по редиректу?
Что такое редирект, выяснили, теперь давайте о том, что передается по нему. В большинстве случаев это следующие данные:
- Ссылочный вес;
- ТИЦ сайта (если в роботсе прописана директива host);
- Возраст страницы, если обе страницы на одном домене.
Когда я двигал один крупный портал, мы его переносили на новый домен, и позиции в Google очень сильно просели, потому что ссылки были на старый домен. Яндекс сразу понял, что поскольку стоит 301 редирект, то ссылочная масса перешла к новому домену (либо он просто-напросто уже тогда не учитывал ссылки). А вот Гуголь ругался и не хотел ранжировать сайт высоко. Тогда мы у всех ссылок поменяли домен, и уже через пару недель был взрывной рост позиций в Гугле. Так что при передаче веса ссылок могут быть нюансы.
В то же время даже правильно настроенный через htaccess редирект не может передавать:
- Санкции, которые были наложены на домен сайта (в очень редких случаях санкции, правда, все же передавались, особенно злой фильтр Яндекса за накрутку ПФ);
- Возраст домена.
Если бы 301 передавал санкции, все бы уже давно проставили со своих дорвеев редирект на конкурентов.
Предостережение
Настраивайте редиректы только после бекапа htaccess. В противном случае есть повышенные риски при неудачном развитии обстоятельств, как у моего знакомого из начала статьи.
Обязательное условие на апаче – наличие подключенных модулей mod_alias и/или mod_rewrite в файле php.ini. Эти модули изначально включены в большинстве хостингов, но вы бы все равно лучше уточнили этот момент.
Чем проверить код ответа сервера
Если полезли проставлять редирект — проверьте потом, все ли правильно сделано.
Лучше всего проверять в Яндекс Вебмастере. Вот ссылка на инструмент Проверка ответа сервера. Если вы зареганы в ЯВМ (да я вас подкалываю, конечно вы там зареганы… правда же?), то вы можете им воспользоваться.
Если же для вас этот вариант не катит — пользуйтесь Берталом. Это классика!
Практические примеры использования
Код Permanent Redirect используется чаще всего в таких случаях:
- Смена домена.
- Склеивание доменов без www с доменами www.
- Перенос конкретных страницы сайта на новый URL.
Кстати, если вы просто удаляете страницу, то вы можете потерять входящие ссылки на неё. Я советую в случае удаления страницы проставлять с неё редирект на главную страницу.
Как правильно вставить код в htaccess
Так, теперь собственно как сделать редирект в htaccess. Ну нужно открыть этот файл сначала, а потом уже думать, как сделать редирект. Подключаемся через FTP (Filezilla например) к нашему сайту, открываем файл через прогу Notepad++, вставляем нужный код, сохраняем. Если что-то не так — откатываем. Но, опять же, лучше всего вам это сделает программист.
https://www.youtube.com/watch?v=E7drfMkONFs
Коды для вставки
Чтобы вы не тупили на тему, как настроить 301 редирект, можете использовать эти коды.
С одной страницы на другую
Самый частый случай — это именно редирект с одной страницы на другую. Редиректы с без www на домен с www и так далее я даже не настраиваю, так как большинство моих сайтов сделаны на движке WordPress, а там все эти редиректы настроены по умолчанию. А вот переадресация страницы — это то, что мне бывает частенько нужно. Вот как прописать 301 редирект таким образом:
Redirect 301 /was.php http://www.site.ru/new.php
Новый адрес нужно обязательно указывать с http и доменным именем. Где was.php — там адрес старой страницы, соответственно вместо www.site.ru/new.php также прописывайте свой вариант.
С www на без www
Обычно редирект используют для перемещения на сайт без www, и я думаю это правильно — лишняя приписка не нужна. Для нового сайта рекомендую перемещение на вариант без www, а для старого главным зеркалом нужно указывать тот вариант, который уже находится в индексе поисковой системы.
Как провести редирект с www на без www:
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
С без www на www
Если планируется редирект с без www на www, используется другой код:
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
С одного домена на другой
Вот как делается редирект на другой сайт:
RewriteCond %{HTTP_HOST} ^old-site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
Редирект с одного домена на другой полезен, например, при переезде сайта на новый домен.
С https на http
Как сделать редирект на http:
RewriteCond %{HTTPS} "on" RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
С http на https
Как сделать 301 редирект на https:
RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
Со страниц со слешем / на конце на страницы без слеша
Некоторые месье любят извращения, и хотят с уже нормально работающих и располагающихся в индексе страниц со слешем на конце настроить редирект на страницы без слеша.
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$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]
Убираем index.php
Если у нас страница site.ru/index.php отдает код 200 ОК, то нужно её убрать нахрен. И проставить 301 редирект с index.php на корень:
RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? [R=301,L]
Как писать название .рф домена в htaccess
Самое важное правило здесь – отказ от кириллицы. Поэтому нужно использовать имя домена в punycode (например, взяв его из Whois).
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.site.ru [NC] RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai /$1 [R=301,L]
Боремся с рефспамом с помощью редиректов
Если вас задалбывает реферальный спам, то есть особый код, который с помощью заголовка HTTP_REFERER настраивает 403 код ответа сервера для трафика с сайтов-спамеров.
RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR] RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC] RewriteRule .* - [F]
Как легко делать редиректы в WordPress: используем плагин Redirection
Для WordPress я советую плагин Redirection. Что это такое? Это то, чем пользоваться проще пареной репы. Видоса на русском нет, но и в английской версии понятно, как сделать редирект с помощью этой фичи:
В основном он помогает сделать редиректы внутри сайта, с одного сайта на другой я бы не стал настраивать там перенаправление.
Установка в видео не описана, но было бы неуважительно по отношению к вам разжевывать такие азы))
В завершение
Если вы не программист, а сеошник или вебмастер, то если вы услышите такие страшные слова, как серверный редирект, query string, php header, location — доверьтесь спецу, прошу вас. Не шутите с редиректами.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: