Шпаргалка по реализации 301 редиректа

301 редирект нужен при «склейке» зеркал с www и без, при переводе сайта с HTTP на HTTPS, при переезде на новый домен, в случае изменения URL страницы и переносе её в другой раздел сайта. Как правильно настроить 301 редирект? Прилагаем инструкцию с примерами и шаблонами.

301 редирект: как правильно настроить перенаправление в .htaccess

Что в статье:

  • Краткая справка: что есть 301 редирект
  • Как задать простой редирект в .htaccess: инструкция
  • Самые распространенные 301 редиректы и их реализация
  • Особенности 301 редиректа, о которых полезно знать
  • Чего НЕ нужно делать при работе с 301 редиректом

Краткая справка: что есть 301 редирект

Простой код состояния 301 (Permanent Redirect), а в русскоязычном сегменте 301 редирект — это способ перенаправить пользователя со старого адреса страницы/ресурса на актуальный. Проделывается это на уровне сервера. В SEO сложно преувеличить ценность 301 редиректа — он помогает исключить из выдачи неактуальные URL, заменяя их новыми. В итоге сохраняется 90-99% ссылочного веса страниц и их позиции в выдаче поисковых систем.

Если перевести техническое взаимодействие на простой человеческий язык, то буквально происходит следующий диалог:301 редирект:— Запрашиваемую страницу я перенес вот сюда, на этот адрес. Это постоянное новое местоположение, возвращать мы её не будем.Браузер:— Хорошо, понял. Отправляю посетителя сразу туда.

Настройку можно осуществить разными способами: скриптами, через HTML и PHP, через редактирование файла .htaccess. О последнем варианте расскажем подробно.

Как задать простой 301 редирект в .htaccess: инструкция

.htaccess — файл, позволяющий менять глобальные настройки и конфигурации веб-сервера Apache.

Найдите файл .htaccess в корневой папке сайта
Найдите файл .htaccess в корневой папке сайта

Иногда для настройки редиректов необходимо связаться с саппортом хостинга.

В скачанном с сайта файле .htaccess все редиректы прописывайте в конце, после исходного содержимого

Пишем простой пример:

Redirect 301 / http://new-site.com

Разбираем:

  • Redirect 301 — инструкция, говорящая о том, что страница перемещена;
  • слэш / — указывает на то, что с верхнего уровня сайта (включая подкаталоги) всё будет переадресовано;
  • http://new-site.com — новая страница/сайт.

Переадресуем конкретную страницу:

Redirect 301 /old/old.htm http://new-site.com/new.html

Переадресуем сайт:

RedirectPermanent / http://new-site.com

Переадресуем каталог:

RedirectPermanent /old-directory http://new-site.com/new-directory/

Памятка: распространенные 301 редиректы и их реализация

301 редирект, перенаправляющий с сайта www на сайт без www:

RewriteCond %{HTTP_HOST} ^www.site\\.ru$ [NC]RewriteRule ^(.*)$ [R=301,L]

или

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

301 редирект с /index.php на корень

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site.com [R=301,L]

301 редирект с /index.html на корень

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://site.com [R=301,L]

301 редирект с URL со слэшем в конце на URL без слэша:

RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_URI} !\..{1,10}$RewriteCond %{REQUEST_URI} !(.*)/$RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

или

RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_URI} !\..+$RewriteCond %{REQUEST_URI} !/$RewriteRule (.*) http://www.site.ru/$1/ [R=301,L]
Файл .htaccess с двумя редиректами: с сайта с www на сайт без www и со страниц без / на страницы со / в конце
Файл .htaccess с двумя редиректами: с сайта с www на сайт без www и со страниц без / на страницы со / в конце

301 редирект со старого домена на актуальный домен:

RewriteCond %{HTTP_HOST} ^old-site\\.ru$ [NC]RewriteRule ^(.*)$ [R=301,L]

301 редирект со страницы на другую страницу:

RewriteRule ^dir/$ []()[R=301,L]

301 редирект с http на https:

RewriteEngine On RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://www.mydomain.com/$1 [R=301,L]

301 редирект с https на http:

RewriteEngine On RewriteCond %{SERVER_PORT} ^443$ [OR] RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

Избавляемся от дублей на сайте

Простой редирект поможет справиться с дублями страниц, засоряющими выдачу. Например, для поисковых систем адреса https://www.site.ru/ и https://www.site.ru — совершенно разные, поэтому нужно определиться, какой вариант использовать: со слэшем (/) или без.

С помощью 301 редиректа убираем слэш:

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

С помощью 301 редиректа добавляем слэш:

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

Заменяем файлы .htm на файлы .html:

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

Особенности 301 редиректа, о которых полезно знать

Методы редиректа с .htaccess срабатывают только на серверах с ОС Linux, с установленным Apache и включенным Mod-Rewrite. Кстати, .htaccess дополнительно нагружает сервер Apache, потому прописывать те же команды в hpptd.conf куда эффективнее, однако веб-мастерам редко предоставляют доступы к конфигурационным файлам.

На WordPress и некоторых схожих CMS наличествуют специальные модули, с помощью которых можно управлять редиректами. Поэтому если вы вдруг не обнаружили файл .htaccess, не торопитесь с выводами о том, что редиректов на сайте нет.

Избегайте исправления файла .htaccess напрямую через CMS сайта! В случае критической ошибки в действиях административная панель прекратит работу, а для восстановления потребуется FTP / SSH-доступ. Используйте для доступа к каталогам и файлам на сайте любой из FTP-клиентов, который вам удобен: FileZilla, WinSCP, FAR Manager, FireFTP, Total Commander, Cyberduck.

Запросите доступы FTP для проекта у менеджера по документам, зайдите на FTP-клиент, заполните окошки «хост», «имя пользователя», «пароль». В корневом разделе сайта найдите .htaccess, далее скачайте и сделайте бэкап перед началом работы.

«Склейка» и передача PR занимает довольно много времени (сроки зависят от скорости обработки роботами поисковых систем), поэтому не удаляйте старую страницу/сайт, пока не убедитесь в окончательном переносе.

Чего НЕ нужно делать при работе с 301 редиректом

  • Не применяйте иные статус-коды ответа сервера в случаях, где требуется 301 редирект. Совет распространяется на настройку https, настройку зеркал сайта с www и т. д.
    Самая частая ошибка, допускаемая по незнанию, — настройка временного 302 редиректа вместо постоянного 301 редиректа. В результате такой настройки роботы поисковых систем получают данные о том, что страницы перемещены на время, хотя это не так.
  • Опасайтесь запуска циклической переадресации. Из-за некорректной настройки .htaccess или неправильной работы плагина CMS может образоваться целая цепочка перенаправлений. Циклическая переадресация приводит к ошибке ERR_TOO_MANY_REDIRECTS при запросе перенесенной страницы.
  • Не перенаправляйте запросы на страницу 404. Регулярно проверяйте сайт на битые ссылки.
  • Не ставьте подряд два, три и более редиректов. Переизбыток перенаправлений увеличивает нагрузку на сервер, замедляя загрузку сайта. В результате теряется вес конечной страницы.
  • Не настраивайте переадресацию для страниц с несколькими URL, которые относятся к разным каталогам. В качестве альтернативы применяйте rel=canonical.
  • Не ставьте редиректы на похожие страницы, содержащие разную информацию. К примеру, на 2 схожих по характеристикам товара в интернет-магазине.
  • Не применяйте редиректы в работе со служебными файлами. Файл robots.txt при любых переездах оставляйте доступным, чтобы роботы Гугла и Яндекса свободно его распознавали и обрабатывали.

Обязательно перепроверяйте результаты настройки. Работа с редиректами — дело тонкое, а от опечаток и ошибок, в итоге нарушающих работоспособность сайта, не застрахован никто. И помните о том, что браузеры кэшируют редиректы, поэтому проверку проводите только после очистки кэша. Удачи в реализации!

99
16 комментариев

Благодарю, качественно собранный мануал, пусть не первый, но достаточно подробный!
Можно ещё добавить редиректы с index.php/index.html на корень и редирект с .../? на корень сайта, довольно частая у многих проблема с ними.

1
Ответить

спасибо за отзыв))

1
Ответить

Пессимизация за 302? Шутите? Просто в индексе будет оставаться старый URL, плюс напрасный расход лимитов на обход.
Я бы вообще сказал: не надо баловства с редиректами, это крайняя мера в настройках сканирования. Удалили товарную страничку - не надо редиректа на категорию, отдайте 410 и забудьте. 301-е хороши при переезде сайта, изменениях в структуре URL, сохранении ссылочной массы (для того же гуглобота) - и всё.
Тот же Гугл и без того годами хранит в индексе давно убитые списки URL, не надо намекать ему, что эти его мёртвые списки всё таки имеют смысл.

1
Ответить

Виктор, в формулировку закралась ошибка, скорректировали. Разумеется, пессимизации за 302 не будет, спасибо за фидбек.

1
Ответить

Спасибо за отзыв))

Ответить

Redirect 301 / http://new-site.com - и что в этом случае произойдет? Все страницы старого сайта будут ссылаться на главную страницу нового? А как сделать чтобы каждая страница старого сайта ссылалась на страницу с аналогичным адресом нового сайта?

Ответить

Redirect 301 / http://new-site.com - и что в этом случае произойдет? Все страницы старого сайта будут ссылаться на главную страницу нового?

Да, это правило перенаправляет все страницы старого на главную страницу нового.

А как сделать чтобы каждая страница старого сайта ссылалась на страницу с аналогичным адресом нового сайта?

Правило для такого варианта перенаправления:
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://new-site.com/$1 [L,R=301]

Ответить