Шпаргалка по реализации 301 редиректа
301 редирект нужен при «склейке» зеркал с www и без, при переводе сайта с HTTP на HTTPS, при переезде на новый домен, в случае изменения URL страницы и переносе её в другой раздел сайта. Как правильно настроить 301 редирект? Прилагаем инструкцию с примерами и шаблонами.
- Краткая справка: что есть 301 редирект
- Как задать простой редирект в .htaccess: инструкция
- Самые распространенные 301 редиректы и их реализация
- Особенности 301 редиректа, о которых полезно знать
- Чего НЕ нужно делать при работе с 301 редиректом
Простой код состояния 301 (Permanent Redirect), а в русскоязычном сегменте 301 редирект — это способ перенаправить пользователя со старого адреса страницы/ресурса на актуальный. Проделывается это на уровне сервера. В SEO сложно преувеличить ценность 301 редиректа — он помогает исключить из выдачи неактуальные URL, заменяя их новыми. В итоге сохраняется 90-99% ссылочного веса страниц и их позиции в выдаче поисковых систем.
Если перевести техническое взаимодействие на простой человеческий язык, то буквально происходит следующий диалог:301 редирект:— Запрашиваемую страницу я перенес вот сюда, на этот адрес. Это постоянное новое местоположение, возвращать мы её не будем.Браузер:— Хорошо, понял. Отправляю посетителя сразу туда.
Настройку можно осуществить разными способами: скриптами, через HTML и PHP, через редактирование файла .htaccess. О последнем варианте расскажем подробно.
.htaccess — файл, позволяющий менять глобальные настройки и конфигурации веб-сервера Apache.
Иногда для настройки редиректов необходимо связаться с саппортом хостинга.
В скачанном с сайта файле .htaccess все редиректы прописывайте в конце, после исходного содержимого
- Redirect 301 — инструкция, говорящая о том, что страница перемещена;
- слэш / — указывает на то, что с верхнего уровня сайта (включая подкаталоги) всё будет переадресовано;
- http://new-site.com — новая страница/сайт.
Переадресуем конкретную страницу:
301 редирект, перенаправляющий с сайта www на сайт без www:
301 редирект с /index.php на корень
301 редирект с /index.html на корень
301 редирект с URL со слэшем в конце на URL без слэша:
Файл .htaccess с двумя редиректами: с сайта с www на сайт без www и со страниц без / на страницы со / в конце
301 редирект со старого домена на актуальный домен:
301 редирект со страницы на другую страницу:
301 редирект с http на https:
RewriteEngine On RewriteCond %
301 редирект с https на http:
RewriteEngine On RewriteCond %
Простой редирект поможет справиться с дублями страниц, засоряющими выдачу. Например, для поисковых систем адреса https://www.site.ru/ и https://www.site.ru — совершенно разные, поэтому нужно определиться, какой вариант использовать: со слэшем (/) или без.
С помощью 301 редиректа убираем слэш:
С помощью 301 редиректа добавляем слэш:
Заменяем файлы .htm на файлы .html:
Методы редиректа с .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 редирект. Совет распространяется на настройку https, настройку зеркал сайта с www и т. д.
Самая частая ошибка, допускаемая по незнанию, — настройка временного 302 редиректа вместо постоянного 301 редиректа. В результате такой настройки роботы поисковых систем получают данные о том, что страницы перемещены на время, хотя это не так. - Опасайтесь запуска циклической переадресации. Из-за некорректной настройки .htaccess или неправильной работы плагина CMS может образоваться целая цепочка перенаправлений. Циклическая переадресация приводит к ошибке ERR_TOO_MANY_REDIRECTS при запросе перенесенной страницы.
- Не перенаправляйте запросы на страницу 404. Регулярно проверяйте сайт на битые ссылки.
- Не ставьте подряд два, три и более редиректов. Переизбыток перенаправлений увеличивает нагрузку на сервер, замедляя загрузку сайта. В результате теряется вес конечной страницы.
- Не настраивайте переадресацию для страниц с несколькими URL, которые относятся к разным каталогам. В качестве альтернативы применяйте rel=canonical.
- Не ставьте редиректы на похожие страницы, содержащие разную информацию. К примеру, на 2 схожих по характеристикам товара в интернет-магазине.
- Не применяйте редиректы в работе со служебными файлами. Файл robots.txt при любых переездах оставляйте доступным, чтобы роботы Гугла и Яндекса свободно его распознавали и обрабатывали.
Обязательно перепроверяйте результаты настройки. Работа с редиректами — дело тонкое, а от опечаток и ошибок, в итоге нарушающих работоспособность сайта, не застрахован никто. И помните о том, что браузеры кэшируют редиректы, поэтому проверку проводите только после очистки кэша. Удачи в реализации!
301 редирект с index (.html и .php) на корень сайта «/»
Возможно Вы даже и не обращали внимание, что Ваша главная страница может быть доступна по двум адресам: site/ и site/index.html (или site/index.php). С точки зрения поисковой оптимизации это можно назвать дублями, хотя поисковые системы умеют обрабатывать такие ситуация, но зачастую в индексе 2 главные страницы. Я придерживаюсь к мнению, что такие очевидные мелочи должны быть исправлены.
Решается эта проблема с помощью 301 редиректа на корень сайта «/». Для создания редиректа, отройте .htaccess (он находится в корне Вашего сайта, к нему можно получить доступ через ftp).
#в случае index.php: RewriteCond % ^[A-Z]\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://VASHSITE/ [R=301,L] #в случае index.html: RewriteCond % ^[A-Z]\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://VASHSITE/ [R=301,L]
Если Ваш сайт сделан на какой-то CMS, то есть вероятность того, что у неё есть функция редиректа с корня на файл index. В этом случае откройте index.php , который находится в корне Вашего движка и пропишите:
if($_SERVER['REQUEST_URI'] == "/index.php") < header("Location: /",TRUE,301); exit(); >
После всех редиректов обязательно проверьте все ли работает. Проще всего это сделать на bertal.ru, который покажет Вам, какой ответ выдает Ваш сервер на различные запросы.
Как сделать 301-Redirect в Nginx с index.php на корень сайта(/)?
Добрый день! Переношу сайт с виртуального хостинга на VDS. Вся проблема в том, что на хостинге работал Apache+php-cgi, а VDS настраиваю на Nginx+php-fpm. Соответственно все правила в .htaccess игнорируются.
На данный момент визуально удалось решить большинство проблем с mod_rewrite, но осталась одна существенная проблема: необходимо реализовать 301-Redirect с site.ru/index.php и site.ru/index.html на site.ru/.
С index.html удалось решить внесением директивы:
Если сделать подобное с index.php, то получается циклическая переадресация.
Попробовал несколько вариантов из интернета. В частности:
Указанный выше способ работает, но некоторые скрипты на сайте работают неправильно, в частности поиск.
Есть ли ещё варианты конфигурации для реализации правильного редиректа?
P.S. на сайте с Apache, для реализации механизма переадресации были следующие директивы и все скрипты на сайте работали исправно:
##Redirect from index.php to root RewriteCond % !^POST RewriteCond % ^[A-Z]\ /index\.php\ HTTP/ RewriteCond %>s ^(443>(s)|8+>s)$ RewriteRule ^index\.php$ http%2://site.ru/ [R=301,L] ##END Redirect from index.php to root ##Redirect from index.html to root RewriteCond % !^POST RewriteCond % ^[A-Z]\ /index\.html\ HTTP/ RewriteCond %>s ^(443>(s)|4+>s)$ RewriteRule ^index\.php$ http%2://site.ru/ [R=301,L] ##END Redirect from index.html to root