Здравствуйте, уважаемые друзья и гости блога! Сегодня пойдет речь о такой странной вещи на сайте, как ошибка 301 Moved Permanently (переехал навсегда) или по другому редирект 301.
Думаю. что все с таким сталкивались, а некоторые даже использовали данную “ошибку 301” на своих сайтах. Но не все знают для чего эта ошибка 301 или иначе редирект 301 нужна на сайте? Для чего он, 301 редирект, используется?!
Вот сейчас мы с вами и займемся разбором этого вопроса во всех его подробностях и нюансах …
Ошибка 301 или редирект 301 что это?
Как Вы уже наверное догадались по переводу слов “moved permanently” – это дословно, что сайт или отдельная его страница “переехал навсегда” по адресу на который Вас перекинул ваш браузер. Тут надеюсь все понятно и ясно без лишних пояснений!
Но возникает вопрос. Для чего это сделано вебмастером этого сайта? Почему он поставил редирект 301 и у нас с вами выскакивает иногда 301 ошибка? А все просто! Ошибка 301 появляется, когда сервер перебрасывает нас с уже не работающего сайта на страницу сделанную специально для перенаправления пользователя на рабочий сайт, но просто с некоторой задержкой или вообще на этой странице нужно самостоятельно перейти по ссылке. Вот это в двух словах об ошибке 301.
Теперь самый важный момент, зачем же все таки нужен редирект 301 на сайте …
Редирект 301 и для чего он нужен?
Есть несколько причин у вебмастера, чтобы использовать редирект 301. Вот они:
- Причина первая: Склейка домена с www и без www. При этом все seo показатели сайта и его ссылочный вес будут совмещены и не будут отличаться друг от друга.
- Причина вторая: Если вдруг пришлось сменить домен для сайта. Тогда применяется редирект 301 и он как раз перенаправляет посетителя сайта и поисковые роботы на рабочий домен сайта. Это также позволит вам сохранить все seo показатели вашего переехавшего сайта, как тИЦ, PR, так и своих посетителей.
- Причина третья: Использование редиректа 301 при переносе отдельной страницы сайта на другой ресурс. Бывают и такие случаи, когда это нужно сделать.
- Причина четвертая: Например у Вас есть сайт, где высокий тИЦ и PR и много посетителей. И еще есть другой сайт, который нужно немного пропиарить и прибавить к нему посещения. Тогда Вы просто на просто перенаправляете при помощи того же редирект 301, с одной страницы высоко посещаемого сайта на страницу более низко посещаемого сайта и тем самым выигрываете, добавив ему веса ссылочной массы и соответственно посещений.
Вот основные причины для использования редирект 301 или ошибка 301 Moved Permanently.
Теперь давайте узнаем, как правильно использовать редирект 301 на своем сайте и как настроить его через файл htaccess …
301 редирект и файл htaccess – как правильно настроить?
Как я вам уже говорил выше – 301 редирект это переадресация посетителя и поискового робота на сайт или отдельно взятую страницу сайта на URL адрес отличный от первоначально запрошенного в браузере.
Для чего это нужно мы с вами также уже разобрали. Но как же это сделать правильно на нашем сайте используя файл htaccess? Сейчас я вам все подробно объясню и приведу примеры внесения изменений в файл htaccess для вашего сайта!
- Перенаправление домена с www на без-www
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
или вот более понятный синтаксис:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC] RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
- 301 редирект запросов без-www на домен с www префиксом
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
Альтернативный вариант:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} !^www.(.*) [NC] RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
- 301 редирект старого домена на новый в фале htaccess
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
- Если вам нужно, чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в файл htaccess вот это:
RewriteEngine on RewriteBase / RewriteRule ^rewrite.htm$ rewrite.html [R=permanent]
- Чтобы заменить все .htm файлы на .html внесите в файл htaccess:
RewriteEngine on RewriteBase / RewriteRule ^(.*).htm$ $1.html [R=permanent]
- Варианты, когда не нужно использовать 301 редирект на вашем сайте:
- Если реализация 301 редиректа невозможна или она займет неоправданно много времени.
- Если контент вашего сайта дублируется на двух или нескольких страницах, но эти страницы должны быть доступны в поиске пользователю ввиду некоторых отличий (на пример, выбор какого-то товара).
- Если одна страница имеет несколько URL адресов (сортировка каталога товаров по различным категориям или критериям).
- Для кросс-доменов. Это, когда контент сайта на двух URL адресах дублируется, но он должен быть доступен на каждом из двух или нескольких доменах.
Этот материал посвящен выходу 301-ой статьи на моем блоге!
Может вам интересно узнать, что такое ошибка 503 и как ее устранить?
На этом пока все. Всем удачи и благополучия!
Содержание:
- Что это такое
- Ошибка 301
- Основные причины возникновения
- Пути быстрого решения
- Как исправить ошибку на виртуальном хостинге
- Настройка редиректа на VDS Nginx+Apache
- Профилактические меры для браузера
- Сервисы для проверки циклических редиректов
- Работа с файлом .htaccess
Что это такое
Циклическое перенаправление на странице или циклический редирект, является бесконечным обращением браузера по адресу одной и той же страницы. В ряде случаев может происходить обращение на другой адрес, который, в итоге, опять приводит на запрашиваемую страницу.
Зачем убирать
- Для повышения скорости загрузки страниц сайта за счет отключения HTTPS-соединений.
- Для быстрого перенаправления посетителей на новый ресурс при переносе сайта на новый домен.
Ошибка 310
В случае неполадок со стороны сервера, циклическая переадресация становится причиной ошибки. При открытии сайта может появиться сообщение – «на этой странице обнаружена циклическая переадресация» что может служить сигналом о наличии ошибки 310.
310 (net::ERR_TOO_MANY_REDIRECTS)
Помимо этого, данная ошибка может появиться при использовании определённого браузера. Наиболее подвержен этому «заболеванию» браузер Chrome. Хотя и в других подобная проблема не редкость.
Основные причины возникновения
- Технические работы на сервере на некоторое время могут привести к возникновению ошибки. После их завершения, как правило, сайт быстро восстанавливает свою корректную работу. Если этого не произошло, в большинстве случаев, со стороны сервера были изменены настройки, отвечающие за переадресацию.
- Повышенная нагрузка на сервер при большом количестве посетителей, пытающихся одновременно получить доступ к странице. В результате сервер не выдерживает нагрузки и «падает» выдавая сообщение об ошибке.
- Некорректно выставленное время на устройстве, с которого выполняется вход на страницу. В большинстве случаев, браузер проводит автоматическую проверки времени на компьютере и сервере. При их несовпадении может возникнуть ошибка циклической переадресации.
- Большой объем данных сохранённых в кэше и cookie браузера.
- Запрет на сохранение cookie сайтов в браузере.
- Циклическое перенаправление и установка CMS
- В панели управления хостингом и в файле .htaccess одновременно указана переадресация на HTTPS.
- Ошибка циклического перенаправления может возникнуть при некорректной установке или настройке CMS. Это относится как к популярным «движкам» – WordPress, Joomla, Opencart, или 1С-Битрикс так и к менее известным.
Пути быстрого решения проблемы
Опираясь на приведённые выше причины, исправить проблему циклической переадресации можно следующими способами:
- Если после технических работ на сервере доступ к странице не восстановился, следует обратиться в техническую поддержку. В случае внесения изменений в настройки сервера, специалисты ТП объяснят, что необходимо предпринять.
- При «падении» сервера из-за большого количества обращений, необходимо дождаться снижения потока посетителей, а также восстановительных работ по налаживанию корректной работы ресурса. В данном случае, желательно обращение в техническую поддержку для выяснения причины отсутствия доступа.
- Очистить cookie, кэш и историю посещений в браузере.
- В настройках безопасности браузера разрешить сохранять cookie сторонних сайтов.
- Наиболее радикальным решением является переустановка CMS. Если это не помогает необходимо обратиться в техническую поддержку хостинг-провайдера и получить инструкции по установке и настройке.
- Убрать переадресацию на HTTPS из файла .htaccess.
Как исправить ошибку на виртуальном хостинге
Данная ошибка возникает при наличии редиректа в файле «.htaccess» и включенном редиректе в ISPmanager. Подробнее о нем можно прочитать в статье «Что такое редирект» нашего блога. Для решения проблемы нужно проверить файл «.htaccess» на наличие редиректов с «http» на «https» с помощью изложенного ниже алгоритма.
- Перейти в ISPmanager, в разделе «WWW» выбрать «WWW-домены» и нужный домен. Затем нажать «Каталог» в верхнем меню для перехода к файлам сайта.
- Выбрать файл «.htaccess» одним нажатием и кликнуть «Изменить» в верхнем меню.
- Проверить файл на наличие редиректов. О возможных вариантах редиректов в «.htaccess» можно узнать здесь.
- Проверить включен ли редирект в настройках ISPmanager. В разделе «WWW» нажать «WWW-домены», выбрать нужный домен и кликнуть «Изменить» в верхнем меню.
- В появившемся окне проверить — установлена ли галочка на пункте «Перенаправлять HTTP-запросы в HTTPS». Данный пункт будет виден только, если включена галочка на пункте «Защищенное соединение (SSL)».
- В разделе «WWW» нажать «WWW-домены», выбрать нужный домен и кликнуть «Редиректы» в верхнем меню. Появится список с редиректами. Если редиректы отсутствуют, то он будет пустым.
- Если редирект включен в пунктах 1, 2 и 3, нужно убрать лишние редиректы оставив лишь один из них.
Настройка редиректа на VDS Nginx+Apache
При использовании Nginx+Apache может произойти зацикливание редиректа «с http на https». Данная проблема связана с тем, что подключение по 80 порту идет на Nginx, а за ним уже находится Apache. Поэтому соединение Nginx и Apache работает не по SSL. В этом случае нужно отредактировать конфигурационный файл Nginx. Добавив в него такие значения:
If ( $scheme = "http" ) { rewrite ^/(.*)$ https://$host/$1 permanent; }
Поддержание браузера в рабочем состоянии
Браузер также часто становится причиной циклической переадресации. Для минимизации его влияния на возможность возникновения ошибки необходимо совершать ряд профилактических действий.
- Своевременно чистить историю и делать это не реже одного раза в неделю, при активном использовании браузера.
- Отключить неиспользуемые плагины и расширения.
- Регулярно обновлять браузер на сайте официальных разработчиков.
Как проверить наличие цепочки редиректов
Самый очевидный способ обнаружения — массовая проверка кодов статуса на всех страницах сайта. Сделать это можно с помощью удобных автоматизированных инструментов (redirect tracker), работающих в браузере или в качестве клиентского ПО.
Они функционируют по схожему принципу. Пользователю нужно всего лишь разместить в операционном окне ссылку на интересующий ресурсы, нажать «Старт» и дождаться результатов сканирования.
Популярные сервисы для отслеживания цепочек редиректов
Netpeak Spider
- Язык: русский.
- Платно (с бесплатным пробным периодом).
- Помимо отслеживания цепочки редиректов, делает полный SEO-аудит сайта, включая выявление ошибок оптимизации.
- Анализирует крупные контентные сайты (более 100 000 страниц).
Анализ сайта Webmasta
- Язык: русский.
- Бесплатно.
- Отслеживает полную цепочку перенаправлений.
- Получение IP-адреса сайта и отслеживание всех веб-ресурсов на этом адресе.
Проверка переадресации Website Planet
- Язык: русский.
- Бесплатно.
- Отслеживание всех типов редиректов.
- Получение полного URL-адреса коротких, рекламных или партнерских ссылок без перехода.
Массовая проверка цепочек редиректов Majento
- Язык: русский.
- Бесплатно.
- Анализирует цепочку редиректов.
- Получение полного URL-адреса коротких, рекламных или партнерских ссылок без перехода.
SEO-помощник Rookee
- Язык: русский.
- Бесплатно (после регистрации).
- SEO-аудит сайта всех страниц сайта по 70 параметрам.
- Пошаговые рекомендации по исправлению найденных ошибок.
После того как страницы с кодами редиректов найдены, рекомендуется приступить к правке конфигурационного файла .htaccess.
Работа с файлом настроек каталогов
Для удобной настройки сервера используется файл .htaccess. С его помощью можно настроить правильные редиректы и значительно снизить риск возникновения циклической переадресации.
Перед настройкой, в файл обязательно вносится следующий код:
RewriteEngine On
После этого идут настройки основных редиректов, подходящие для различных серверов, в том числе Nginx и Apache.
Важно помнить, что прежде чем вносить какие-либо изменения в файл .htaccess необходимо сделать его копию и желательно бекап всего сайта.
Здравствуйте, уважаемые друзья и гости блога! Сегодня пойдет речь о такой странной вещи на сайте, как ошибка 301 Moved Permanently (переехал навсегда) или по другому редирект 301.
Думаю. что все с таким сталкивались, а некоторые даже использовали данную “ошибку 301” на своих сайтах. Но не все знают для чего эта ошибка 301 или иначе редирект 301 нужна на сайте? Для чего он, 301 редирект, используется?!
Вот сейчас мы с вами и займемся разбором этого вопроса во всех его подробностях и нюансах …
Как Вы уже наверное догадались по переводу слов “moved permanently” – это дословно, что сайт или отдельная его страница “переехал навсегда” по адресу на который Вас перекинул ваш браузер. Тут надеюсь все понятно и ясно без лишних пояснений!
Но возникает вопрос. Для чего это сделано вебмастером этого сайта? Почему он поставил редирект 301 и у нас с вами выскакивает иногда 301 ошибка? А все просто! Ошибка 301 появляется, когда сервер перебрасывает нас с уже не работающего сайта на страницу сделанную специально для перенаправления пользователя на рабочий сайт, но просто с некоторой задержкой или вообще на этой странице нужно самостоятельно перейти по ссылке. Вот это в двух словах об ошибке 301.
Теперь самый важный момент, зачем же все таки нужен редирект 301 на сайте …
Редирект 301 и для чего он нужен?
Есть несколько причин у вебмастера, чтобы использовать редирект 301. Вот они:
- Причина первая: Склейка домена с www и без www. При этом все seo показатели сайта и его ссылочный вес будут совмещены и не будут отличаться друг от друга.
- Причина вторая: Если вдруг пришлось сменить домен для сайта. Тогда применяется редирект 301 и он как раз перенаправляет посетителя сайта и поисковые роботы на рабочий домен сайта. Это также позволит вам сохранить все seo показатели вашего переехавшего сайта, как тИЦ, PR, так и своих посетителей.
- Причина третья: Использование редиректа 301 при переносе отдельной страницы сайта на другой ресурс. Бывают и такие случаи, когда это нужно сделать.
- Причина четвертая: Например у Вас есть сайт, где высокий тИЦ и PR и много посетителей. И еще есть другой сайт, который нужно немного пропиарить и прибавить к нему посещения. Тогда Вы просто на просто перенаправляете при помощи того же редирект 301, с одной страницы высоко посещаемого сайта на страницу более низко посещаемого сайта и тем самым выигрываете, добавив ему веса ссылочной массы и соответственно посещений.
Вот основные причины для использования редирект 301 или ошибка 301 Moved Permanently.
Теперь давайте узнаем, как правильно использовать редирект 301 на своем сайте и как настроить его через файл htaccess …
301 редирект и файл htaccess – как правильно настроить?
Как я вам уже говорил выше – 301 редирект это переадресация посетителя и поискового робота на сайт или отдельно взятую страницу сайта на URL адрес отличный от первоначально запрошенного в браузере.
Для чего это нужно мы с вами также уже разобрали. Но как же это сделать правильно на нашем сайте используя файл htaccess? Сейчас я вам все подробно объясню и приведу примеры внесения изменений в файл htaccess для вашего сайта!
- Перенаправление домена с www на без-www
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
или вот более понятный синтаксис:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC] RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
- 301 редирект запросов без-www на домен с www префиксом
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
Альтернативный вариант:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} !^www.(.*) [NC] RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
- 301 редирект старого домена на новый в фале htaccess
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
- Если вам нужно, чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в файл htaccess вот это:
RewriteEngine on RewriteBase / RewriteRule ^rewrite.htm$ rewrite.html [R=permanent]
- Чтобы заменить все .htm файлы на .html внесите в файл htaccess:
RewriteEngine on RewriteBase / RewriteRule ^(.*).htm$ $1.html [R=permanent]
- Варианты, когда не нужно использовать 301 редирект на вашем сайте:
- Если реализация 301 редиректа невозможна или она займет неоправданно много времени.
- Если контент вашего сайта дублируется на двух или нескольких страницах, но эти страницы должны быть доступны в поиске пользователю ввиду некоторых отличий (на пример, выбор какого-то товара).
- Если одна страница имеет несколько URL адресов (сортировка каталога товаров по различным категориям или критериям).
- Для кросс-доменов. Это, когда контент сайта на двух URL адресах дублируется, но он должен быть доступен на каждом из двух или нескольких доменах.
Этот материал посвящен выходу 301-ой статьи на моем блоге!
Может вам интересно узнать, что такое ошибка 503 и как ее устранить?
На этом пока все. Всем удачи и благополучия!
При работе с веб-ресурсами возникают ситуации, когда происходит удаление, перенос или изменение url-адреса отдельных страниц или сайта целиком. При этом требуется сохранить индексацию в поисковых системах и перенаправить пользовательский трафик на новый адрес. Для решения этой задачи используется функция под названием 301 Redirect. Это один из инструментов SEO, который позволяет не только избежать ошибок при открытии отдельных страниц, но и добиться корректной работы ресурса. Правильные настройки редиректа дают дополнительную возможность получить синергетический эффект в поисковой оптимизации и увеличить количество органического трафика на релевантные страницы. Рассмотрим более подробно, как происходит настройка редиректа 301.
Что такое переадресация 301
Permanent Redirect 301 применяется с целью организации постоянной переадресации с неактуального доменного адреса или url отдельной страницы на рабочую версию. Редирект может понадобиться в связи с глобальным переносом сайта на другой домен, техническими изменениями в написании адреса, удалением страниц, необходимостью внутренней и внешней перелинковки. Один из вариантов использования перманентной переадресации – редирект с нескольких доменных имен, созданных в разных зонах, на один актуальный адрес. Грамотное использование редиректа позволяет перемещать контент без потерь в поисковой индексации, сохранить и даже увеличить прежний вес и позицию в выдаче.
Настроить код состояния HTTP 301 можно разными способами:
-
с помощью HTML и PHP;
-
через панель управления или плагины соответствующей CMS;
-
при помощи специальных скриптов (программ);
-
на уровне хостинг-провайдера;
-
внесением соответствующих записей в файлы .htaccess для сервера Apache или web.config для IIS.
Последний способ является наиболее простым и надежным. О нем чуть позже поговорим подробнее.
Альтернативные методы переадресации
- Редирект 302. Применяется в случае временной переадресации с одного url на другой. При его использовании поисковая система индексирует все доступные версии сайта или страницы. Объединения ссылочного веса и внутренних метрик на приоритетном ресурсе не происходит.
- 307 Temporary Redirect рекомендуется применять в исключительных случаях. Например, при техническом обслуживании сайта, когда он недоступен некоторое время.
- Обновления Meta Refresh выполняют переадресацию не на уровне сервера, а непосредственно на сайте. Пользователь сталкивается с временной задержкой (обычно около пяти секунд), после чего для перехода на нужную страницу должен принудительно запустить определенную команду. Этот метод часто приводит к падению посетительского интереса и проседанию поисковых индексов.
- Редирект rel=«canonical». Позволяет сохранить доступ посетителям ресурса к контенту дублирующихся страниц. При этом для поисковиков наличие команды canonical на одной из страниц говорит о том, что только она подлежит индексации в поиске.
В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи.
Не рекомендуется использовать постоянный редирект при временном переносе сайта или наличии серьезных проблем со старым доменным именем. Если адрес забанен или попал под поисковую фильтрацию, смена дислокации с применением переадресации не поможет избавиться от этих ограничений.
В каких случаях используется постоянный редирект 301
-
Смена доменного имени, перенос сайта. Необходимо произвести тотальную настройку переадресации со старого адреса на новый, чтобы все без исключения запросы к old_site.ru перенаправлялись на new_site.ru.
-
Изменение написания url определенных страниц в целях SEO-продвижения, смены CMS или по иным причинам. Требуется настроить редирект с site.ru/1hdkr5 на site.ru/page_adress.
-
Перенос разделов на субдомены. Необходимо сменить адрес www.site.ru/example на example.site.ru.
-
Для аккумуляции трафика с адресов, купленных в разных доменных зонах, на один приоритетный ресурс.
-
Исключение дублирующихся страниц из индекса.
-
Склейка зеркал сайта – вариантов сайта с идентичным контентом, но разным написанием адресов: site.ru, www.site.ru, https://site1.ru и т.д. В этом случае выбирается один приоритетный домен и на него настраивается редирект со всех остальных зеркал.
-
Удаление ранее существовавшей страницы. В этом случае пользователи обычно видят ошибку 404. Большое количество таких сообщений негативно воспринимается как пользователями, так и поисковиками.
-
Для быстрого перехода пользователя на мобильную версию ресурса со смартфонов и планшетных устройств.
Создание постоянной переадресации 301 через настройки и плагины CMS
В большинстве популярных конструкторов сайтов и CMS (OpenCart, Joomla!, Битрикс, Wix, Тильда) предусмотрена настройка редиректов с помощью встроенных инструментов. Если сайт создан с помощью WordPress, для настройки переадресации можно воспользоваться следующими плагинами:
-
Redirection — самый популярный плагин для настройки редиректов. Кроме основной функции обладает следующими возможностями: сбором статистики переадресаций, отслеживанием ошибок 404, поддержкой регулярных выражений.
-
Safe Redirect Manager — простой плагин, который также поддерживает регулярные выражения, практически не влияет на производительность сайта.
-
Quick Page/Post Redirect Plugin — еще один удобный инструмент оптимизации. Один из недостатков — отсутствие поддержки регулярных выражений. К ссылкам можно добавлять атрибут «nofollow».
-
Simple 301 Redirects. Данный модуль обладает одним недостатком – url для переадресации необходимо прописывать вручную.
Настроить Permanent Redirect 301 в Вордпресс можно и через редактирование файла .htaccess в разделе управления хостингом. Чтобы подключиться к нему, потребуется использовать FTP-клиент. Сама кодировка производится по общим правилам настройки переадресации в .htaccess.
Чтобы настроить 301 редирект в CMS OpenCart в файле .htaccess необходимо прописать:
RewriteCond %{QUERY_STRING} ^_route_=адрес_старой_страницы.html$ RewriteRule ^(.*)$ http://ваш_домен.ru/новой_страницы/? [R=301,L]
Для Битрикс кодировка будет выглядеть следующим образом:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.sng-it.ru$ [NC] RewriteRule ^(.*)$ http://sng-it.ru/$1 [R=301,L]
В Joomla настройки переадресации производятся через панель администратора в разделе «Компоненты» => «Перенаправление». Здесь можно не только установить правила редиректа, но и отслеживать страницы с битыми ссылками и перенаправлять их на корректные адреса.
С конструкторами сайтов все не так однозначно. Например, один из наиболее популярных CMS-конструкторов WIX не предоставляет возможности создания файла .htaccess.
Но настроить редирект 301 довольно просто в базовом редакторе.
Настройка 301 редирект в .htaccess
Файл с расширением .htaccess – это дополнительный конфигурационный файл web-сервера Apache. Его используют для настройки веб-сервера, а также для обработки различных URL-адресов.
Для настройки 301 редиректа в файле .htaccess чаще всего применяют одну из трех директив: Redirect, RedirectMatch или RewriteRule. Директивы относятся только к папке, где размещен .htaccess, а оттуда распространяются на дочерние папки.
Найти файл можно через панель управления хостинга либо использовать FTP-клиент. При любом варианте нужно включить отображение скрытых файлов.
Предварительная подготовка
-
Для создания 301 редиректа перейдите в панель управления вашего сайта.
-
Проверьте наличие .htaccess файла в корневом каталоге сайта (public_html, если используете WordPress). Если файл отсутствует, создайте его.
-
Рекомендуем все условия редирект записывать в блоке IfModule, дабы избежать ошибок при выполнении файла htaccess.
<IfModule mod_rewrite.c> </IfModule>
-
Перед тем как начать прописывать правила перенаправления, необходимо включить механизм преобразований (RewriteEngine) при помощи команды RewriteEngine On.
-
Хостинги применяют по умолчанию 302 или любой другой 3xx редирект. В связи с этим в правилах используются флаги. Рекомендуем дописывать в своих правилах [R=301,L].
Разберем наиболее распространенные варианты создания 301 редиректа через .htaccess.
Склейка зеркал сайта (www / без www)
Сайты http://name.site и http://www.name.site для поисковых систем являются разными. А по факту это разные адреса одного сайта.
В поисковой системе сайт по одному адресу будет проиндексирован, а по второму адресу зафиксирован как дубль, что может повлиять на продвижение ресурса. Для избегания дублей необходимо сделать так называемую «склейку» сайта, то есть прописать 301 редирект в .htaccess.
Если изначально в индекс поисковой системы попала версия «с www», в файл .htaccess добавляется редирект на «без www»:
RewriteCond %{HTTP_HOST} ^www.name.site$ [NC] RewriteRule ^(.*)$ http://name.site/$1 [R=301,L]
Если произошла обратная ситуация и необходима переадресация с без «www» на «www», то в файл прописывается:
RewriteCond %{HTTP_HOST} ^v name.site$ [NC] RewriteRule ^(.*)$ http://www.name.site/$1 [R=301,L]
Редирект с http на https для всего сайта
В случае перехода на защищенный протокол https для всего сайта, необходимо настроить перенаправление с http на https. Для этого в файл .htaccess добавьте:
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Если данная конструкция не сработает, попробуйте другой вариант:
RewriteCond %{HTTPS} =on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Если редирект не работает и в этом случае, попробуйте такой вариант:
RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} =/page.php RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
В результате пройдет перенаправление на https всех пользователей и поисковых систем.
Постранично
Бывают случаи, когда необходимо создать редирект на https всех страниц, кроме одной. В этом случае используют постраничный редирект:
RewriteEngine On RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} !^/page.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Для одной страницы
Для редиректа с http на https одной страницы (например page.php), в файл добавьте следующую конструкцию:
RewriteEngine On RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} =/page.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Редирект сайта с https на http
Если необходимо сделать 301 редирект всего сайта с https на http, в файл прописывается следующее:
RewriteCond %{SERVER_PORT} ^443$ [OR] RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://name.site/$1 [R=301,L]
Изменение домена
В том случае. если необходимо перейти на другой домен, при этом сохранив SEO-позиции, в файл .htaccess прописывают следующее:
RewriteCond %{HTTP_HOST} ^www.old_name.ru$ [NC] RewriteRule ^(.*)$ http://new_name.ru/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^old_name.ru$ [NC] RewriteRule ^(.*)$ http://new_name.ru/$1 [L,R=301]
Редирект на страницу с другим url (без параметров)
Иногда возникает ситуация, когда необходимо изменить url страницы, то есть перенести данные с одной страницы на другую страницу, при этом не потеряв вес страниц. В этом случае в файл .htaccess прописывают следующее:
RewriteRule ^(.*)old_page.html$ http://vash-sait.ru/new_page.html [R=301,L]
Редирект для url (с параметрами)
Если адрес содержит параметр (например, http://name.site/articles.php?section=1, где параметром является «section=1» ), то прописывают следующую конструкцию:
RewriteCond %{QUERY_STRING} section=1 RewriteRule ^index.php http://name.site/articles.php? [R=301,L]
Редирект с index.php на главную страницу
В тех случаях, когда главная страница сайта может быть недоступна по нескольким адресам одновременно, применяют следующую конструкцию:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/ RewriteRule ^index.php$ http://name.site/ [R=301,L]
Редирект со страниц со слешем на без слеша (для всего сайта)
Для избегания дублей в файле .htaccess используют следующую конструкцию:
RewriteCond %{REQUEST_URI} !? RewriteCond %{REQUEST_URI} !& RewriteCond %{REQUEST_URI} != RewriteCond %{REQUEST_URI} !. RewriteCond %{REQUEST_URI} ![^/]$ RewriteRule ^(.*)/$ /$1 [R=301,L]
Или более короткий вариант:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$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 редирект с 404 Not Found
Код 404 Not Found (страница не найдена) присваивается удаленной или несуществующей странице на сайте. Создание постоянного перенаправления с таких страниц актуально для контентных сайтов и крупных интернет-магазинов, где страницы часто удаляются по естественным причинам. Тогда возникает потребность перенаправить посетителей на одну из главных страниц сайта, чтобы они не уходили с ресурса при виде ошибки.
301 редирект для страниц 404 Not Found сделать совсем не сложно. Например, этот код перенаправит со всех 404-страниц на главную:
ErrorDocument 404 http://www.site.com/301.html
Однако делать такие редиректы в массовом порядке не рекомендуется, так как это может испортить SEO-статистику всего ресурса.
Финальный вид файла .htaccess
Пример файла htaccess, после добавления в него редиректов:
Options -Indexes ErrorDocument 404 /404.php php_flag register_globals off php_value pcre.recursion_limit 1000 #Условия 301 редиректа <IfModule mod_rewrite.c> RewriteEngine On # склейка зеркал RewriteCond %{HTTP_HOST} ^my_site.ru RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^my_site.ru RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.my_site.ru RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.my_site.ru$ [NC] RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.my_site.ru RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] # без слеша RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L] </IfModule> php_value default_charset utf-8 AddType 'text/html; charset=utf-8' .html .htm .shtml
Синтаксис для регулярных выражений в .htaccess
. |
точка заменяет произвольный символ |
[abc] |
обозначает перечень знаков, совпадающих с буквами a, b, или с |
[^abc] |
список символов вне указанного диапазона (кроме a, b, с) |
* |
указывает на то, что предыдущий знак может повторяться 0 или больше раз |
[abc]* |
команда найдет идущие подряд символы из заданного набора |
[^abc]* |
приводит к противоположному эффекту |
.* |
заменяет любой набор символов |
«.*» |
ищет все подстроки между кавычками |
^ |
начало строки (когда используется в начале выражения) |
$ |
означает конец строки |
w |
цифра, буква или подчеркивание _ |
d |
заменяет любую цифру |
D |
может заменить любой знак, кроме цифры |
[0-9] |
для замены любой цифры |
[a-z] |
для всех букв от a до z в нижнем регистре |
[A-Z] |
для каждой буквы от A до Z в верхнем регистре |
[a-zA-Z] |
любая буква от a до Z во всех регистрах |
[a-Z] |
аналогично |
Важно учитывать, что настройка редиректа путем редактирования файла .htaccess доступна исключительно для веб-серверов Apache.
Другие способы создания переадресации 301
Через PHP
Данный вариант подойдет тем, кто хорошо разбирается в web-программировании и PHP. Необходимо открыть файл index.php в корне CMS-движка и прописать там:
if($_SERVER['REQUEST_URI'] == "/index.php") { header("Location: /",TRUE,301); exit(); }
(в первой строке укажите старый url, а во второй — новый)
Второй способ — перенаправление при помощи отправки заголовков (скрипта):
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.newdomain.ru/newdir/newpage.htm"); exit(); ?>
ASP-редирект
<%@ Language=VBScript %> <% Response.Status="301 Moved Permanently" Response.AddHeader "Location", "http://www.new-url.com" response.end %>
ASP.NET редирект
Найдите в корне своего сайта файл web.config и вставьте в секцию синтаксис:
<script runat="server"> private void Page_Load(object sender, System.EventArgs e) { Response.Status = "301 Moved Permanently"; Response.AddHeader("Location","http://www.new-url.com"); } </script>
ColdFusion редирект
<.cfheader statuscode="301″ statustext="Moved permanently"> <.cfheader name="Location" value="http://www.new-url.com">
JSP (Java) редирект
Данный способ подойдет для небольшой корректировки простых сайтов. Код можно прописать лишь в одном файле, а сам файл добавить на все нужные страницы, указав:
<script type="text/javascript" src="redirect.js"></script> <script type="text/javascript"> location="https://yandex.ru"; </script>
CGI-скрипт на PERL
$q = new CGI; print $q->redirect("http://www.new-url.com/");
Ruby on Rails
def old_action headers["Status"] = "301 Moved Permanently" redirect_to "http://www.new-url.com/" end
Редирект в Nginx
if ($host = 'www.domain.com' ) { rewrite ^(.*)$ http://domain.com$1 permanent; }
HTML-редирект
Этот способ подойдет для небольших статических сайтов, когда требуется настроить переадресацию для одной страницы. Для этого необходимо добавить специальный мета-тег внутри кода HTML. Пример записи редиректа на другой ресурс после 5-секундной задержки:
<meta http-equiv="refresh" content="5;https://livepage.pro">
Если поставить значение 0 вместо 5, то переадресация на https://livepage.pro произойдет моментально.
Однако для больших сайтов HTML-перенаправление делать сложно и затратно по времени, поэтому лучше отдать предпочтение другому варианту.
Редирект 301 в панелях управления сервера
Большинство панелей управления сервера предоставляют возможность настройки переадресации с кодом 301. Рассмотрим варианты решения этой задачи на примере двух популярных ПУ для VDS.
Cpanel
Нужно перейти в блок «Домены» => «Перенаправления». В появившемся окне выполнить следующее:
-
В строке «Тип» выбрать «Постоянный 301».
-
В строке «https://www» из выпадающего списка выбрать домен сайта (например, example.ru).
-
В строке «Перенаправляет на» указать для домена адрес http://example.ru.
-
В блоке «Перенаправление www» поставить галочку напротив «Перенаправлять только с www».
-
Сохранить изменения кликом на «Добавить».
ISPmanager
В этой панели можно вручную править файлы nginx.config или .htaccess, но есть и встроенный механизм переадресации. Например, для настройки редиректа на https/http нужно снять галочку с соответствующего пункта в разделе «WWW-домены».
Автоматическое создание переадресации
При отсутствии знаний и опыта самостоятельной настройки редиректа можно воспользоваться сервисами автоматической генерации:
-
Seomagnifier — 301 для www;
-
301 Redirect Code Generator Tool — для доменов и страниц;
-
Generate .htaccess— для страниц, разделов сайтов, доменов.
Проверка корректности настроек 301 редиректа
Самый простой способ проверки переадресации – ручное тестирование. Для этого необходимо вставить в адресную строку браузера url сайта или страницы, с которой настроено перенаправление. Если при открытии будет доступен ресурс, на который настроен редирект, то переадресация выполняется правильно.
Для автоматической проверки можно воспользоваться специальными сервисами:
-
Redirect Checker, bertal.ru или Header Checker Tool для тестирования отдельных страниц;
-
программой Screaming Frog Seo Spider, способной просканировать весь сайт.
Существует ряд ошибок, которые следует избегать при настройке редирект 301:
-
использование перенаправлений между страницами сайта без изменения их url в ссылках;
-
установка временной переадресации вместо постоянной;
-
неправильный выбор типа редиректа;
-
перенаправление файла robots.txt;
-
непонимание разницы между rel=canonical и кодом 301;
-
редирект на нерелевантный контент;
-
переадресация, которая не приводит к 200-й странице.
Стоит отметить проблему создания цепочки ссылок, которая может привести к появлению циклического редиректа — ошибки с кодом «ERR_TOO_MANY_REDIRECTS». Наиболее распространенные причины возникновения такого бага – неправильная настройка в процессе создания переадресации, вирусная атака, слишком длинная цепочка редиректов. Не рекомендуется настраивать редирект, содержащий более пяти адресов. Оптимальной является прямая переадресация со старого на новый url.
Заключение
Использование редиректа 301– очень важный способ поисковой и пользовательской оптимизации веб-ресурса. Использовать его следует с осторожностью. Неправильная настройка может привести к сбоям в работе сайта и потере поисковых позиций.
Инструментов для настройки корректной работы Permanent Redirect 301 существует достаточно много. Наиболее удобный и правильный – внесение записей в файл .htaccess. Недостаток этого метода в том, что он доступен только для веб-серверов Apache. При использовании IIS придется настраивать web.config. Для создания сложных правил переадресации более всего подходит PHP, но в этом случае без помощи программиста не обойтись. Еще одним вариантом настройки 301 редиректа может быть обращение к хостинг-провайдеру с целью подключения услуги web-форвардинга.
What is redirection?
Redirection is a way of forwarding the user to the URL that is different from the one they initially clicked on. Down below some of the most common types of redirection are listed.
301 Moved Permanently
A 301 redirect is a permanent redirect which passes between 90-99% of link equity (ranking power) to the redirected page. 301 signals that the page has been moved to another URL and the old URL is outdated.
302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)
302 is a temporary redirect which passes 0% of link equity, and shouldn’t be used in most cases.
As of now, the internet runs on an HTTP protocol which dictates how URLs work. In two versions of this protocol, the HTTP response status code is different:
- HTTP 1.0: 302 status code is «Moved Temporarily» — current page has been moved temporarily to another URL.
- HTTP 1.1: the description phrase has been changed to «Found» — current page has been found.
307 Moved Temporarily (HTTP 1.1 Only)
A 307 redirect is the HTTP 1.1 successor of the 302 redirect. While the major crawlers will treat it like a 302 in some cases, it is best to use a 301 for almost all cases. The exception to this is when content is really moved only temporarily (such as during maintenance) and the server has already been identified by the search engines as 1.1 compatible.
Since it’s essentially impossible to determine whether the search engines have identified a page as compatible, it is generally best to use a 302 redirect for content that has been moved temporarily.
Other redirection types
There are also some other types of redirection: Meta Refresh or JavaScript redirection that are executed on the page level rather than the web server level. This is what a typical Meta Refresh redirect looks like:
<meta http-equiv="refresh" content="2;url=http://example.com/" />
It’s best not to use these types of redirect, as they are often used by spammers and doorway pages. Besides, they pass little to none of the link juice.
Examples of using redirects
Redirecting your domain to a non-www URL:
RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]
Redirecting your domain to a www URL:
RewriteCond %{HTTP_HOST} ^site.com$ [NC]
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]
To choose which URL to make canonical, consider:
- which URL ranks higher in the SERPs;
- which URL is more represented in the index.
Redirecting your domain to URL without a slash
When developing a website, it’s important to choose whether you want to add a slash to the links, because the search engines consider the links
— www.site.com/cat1
and
— www.site.com/cat1
to be different. Then, you’ll have to add the following code:
To delete the slash from the URLs:
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
To add the slash to the URLs:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
To redirect the user from one page to another:
Redirect 301 /oldpage.html http://www.site.com/newpage.html
Redirecting the main page duplicates
This code ensures that if there are multiple versions of the direct link to the main page (index, etc.), they will all redirect to the canonical main page:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /([^/]+/)*(default|index|main).(html|php|htm) HTTP/ [NC]
RewriteRule ^(([^/]+/)*)(default|main|index).(html|php|htm)$ http://www.site.com/$1 [L,R=301]
Redirecting catalogs
If the URLs reflect the structure of a catalog, changes in the catalog will lead to changes in the URLs. In this case, use the following redirect:
RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]
But, if the URL of the previous catalog comes right after the name of a domain: www.site.com/old-catalog, use this code:
RewriteRule old-catalog /(.*) / old-catalog /$1 [R=301,L]
If you’ve switched platforms or a CMS and only the URLs’ extension has changed, use this redirect:
RedirectMatch 301 (.*).php$ http://www.site.com$1.html
Examples of using redirection to avoid duplicate pages
Redirecting (sub-)domains
In case you’ve bought several domains with multiple TLDs, OR used a subdomain to develop a new website and forgot to block it from being indexed by the search engines. Either way, you have to set up redirection to the root domain:
RewriteCond %{HTTP_HOST} !^www.site.com
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]
That way, all the (sub-)domains like www.site.org, www.site.net, test.site.com, will redirect to www.site.com
Deleting multiple slashes/hyphens from the URLs
Sometimes, user can accidentally type in multiple slashes, e.g. www.site.com/catalog////page-1.html. In this case, you have to set up a 301 redirect to a page with a single slash www.site.com/catalog/page-1.html:
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
In the same way, you can set up a redirect from a URL with multiple hyphens (for example, www.site.com/catalog/page—1.html) to www.site.com/catalog/page-1.html:
RewriteCond %{REQUEST_URI} ^(.*)--(.*)$
RewriteRule . %1-%2 [R=301,L]
Redirecting from any URL to a lowercase URL
The search engines notice the letter case, so it’s best to have your URLs in lowercase. If you haven’t developed your website with this in mind, you can use this PHP-script:
$lowerURI=strtolower($_SERVER['REQUEST_URI']);
if($_SERVER['REQUEST_URI']!=$lowerURI)
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://" . $_SERVER['HTTP_HOST'] . $lowerURI);
exit();
}
How to move your website to a new domain? The optimal strategy for a 301 redirect
According to the most popular search engines, the best strategy for moving to a new domain is:
- mounting a page-by-page 301 redirect from the old site to the new one;
- don’t set up a redirect from robots.txt — add the Host directive to the new domain instead.
In this case, the code on the former website will have to look something like this:
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} !^www.site.com
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]
а файл robots.txt для старого сайта:
User-agent: Yandex
Disallow:
Host: newsite.com
Generating 301 redirects
If you’re not particularly tech-savvy, you can use the online services for generating basic redirects:
http://www.webconfs.com/htaccess-redirect-generator.php
http://www.rapidtables.com/web/tools/redirect-generator.htm
Just enter your data and get a code for redirection between domains, directories, and URLs.
How to test the 301 redirect
With every change in 301 redirect, you need to test the site’s performance:
- whether it’s working (check the main page);
- go through the main sections and webpages of the site.
301 redirect VS Canonical — which one to use & when?
Minor details aside, in order to understand what exactly do we want to say, Google offers some clear-cut rules. In very simple terms, this is how the search engines understand our commands:
301: okay, google (or any other search engine), my page isn’t there anymore and it’s been permanently moved to a new URL. Please, delete the old link from the index, and pass the link juice to the new page.
Canonical: okay, google, I’ve got multiple versions of the same page (or its content), so, please, index only the canonical version. I will keep the other versions for people to see, but don’t index them, please, and pass the link juice to the canonical page.
When is it better to use a 301 redirect?
- This is a preferred method by default;
- For pages, that have beenmoved permanently, or their URLs have been changed;
- For domains, if you’ve moved your website to the new domain;
- For 404 pages. For example, if a certain product has been deleted from the catalog, you can set up a redirect to a page with a similar product, or to the URL of the product category.
When is it better to use rel= «canonical»?
- If you can’t set up 301 redirects or it won’t be time-efficient;
- For duplicate content, if you want to keep both versions (for example, pages with different clothing sizes);
- When you have multiple URLs leading to the same page (catalog categories, pages for tracking the traffic from affiliate links, etc.);
- For cross-domain resource sharing, if you want to transfer data between pages that have different origins (domains, for example).
To sum it up
Both solutions pass the link juice and both are ranked by Google equally. 301 redirect is a bit more preferred, though.
Redirection mistakes
- Redirection chains (avoid them to maximize the speed and the link juice flow of the website);
- Using the wrong type of redirect (to make the right decision, you have to consider all the details);
- Setting up internal redirects without rewriting the URLs of the links. You have to make sure that links on your website don’t lead to pages with the redirect;
- Redirecting to irrelevant pages/content. Your links should always lead either to similar pages or to the section of the site that included the requested page;
- The wrong choice of either rel=canonical or 301 direct (see above);
- Redirecting robots.txt (it’s better to add the Host directive);
- Any redirect, which doesn’t lead to a page with a 200 status code (every link should lead to a properly working page with a 200 status response. Otherwise, don’t confuse the crawlers and just show the 404 Error page).
Hopefully, this 301 how-to guide will be your cheat sheet and will help you to use a 301 redirect on your website.
If you have any questions, ask them down below. I will try my best to help you!
Read also:
Essential on-site SEO factors.
Сообщение с кодом 301 Redirect сервер возвращает в том случае,
если пользователь либо поисковый робот перенаправляется на URL,
отличающийся от того, на который совершается переход.
О чем свидетельствует код 301
Эта ошибка указывает на то, что старый адрес утратил свою актуальность, и что содержимое,
расположенное по этому адресу, перемещено на другой.
Для поисковых систем это сообщение приводит к автоматической переиндексации,
вследствие чего они начнут перенаправлять пользователей на новый адрес.
Код 301 не является ошибкой, это сервисное сообщение,
которое используется администратором ресурса для настройки переадресации.
Это важно для сохранения рейтинга страницы, адрес которой изменяется, в поисковых системах.
Индексация страницы по новому адресу при использовании редиректа будет происходить точно так же,
как и старой, и раскручивать новый адрес в поиске не понадобится.
Что делать пользователю, когда в браузере появляется код ошибки 301
Поскольку настройка редиректа всегда зависит только от администратора ресурса или хостинг-провайдера,
пользователю не следует ничего предпринимать в том случае,
если сервер перенаправил его на требуемую страницу.
В случае, если перенаправление привело на другую страницу либо возвратило ошибку с любым другим кодом,
например, 404 Page not found, следует сообщить об этом администратору ресурса или
провайдеру услуг хостинга.
Причины возникновения кода 301 redirect
Этот код не сигнализирует об ошибке, он является сервисным сообщением,
которое используют системные администраторы для самых разных задач:
- сохранение «пользовательских сигналов» контента, размещенного на странице;
- сохранение и передача накопленной ссылочной массы на другой адрес;
- перемещение страниц;
- удаление повторяющихся страниц, склейка;
- ребрендинг сайта;
- смена доменного имени;
- управление трафиком – перенаправление на нужный адрес.
Появление сообщения с кодом 301 Redirect сигнализирует о том,
что владелец ресурса настроил переадресацию.
Если все сделано правильно, пользователь будет перенаправлен на искомую страницу.
При работе с веб-ресурсами возникают ситуации, когда происходит удаление, перенос или изменение url-адреса отдельных страниц или сайта целиком. При этом требуется сохранить индексацию в поисковых системах и перенаправить пользовательский трафик на новый адрес. Для решения этой задачи используется функция под названием 301 Redirect. Это один из инструментов SEO, который позволяет не только избежать ошибок при открытии отдельных страниц, но и добиться корректной работы ресурса. Правильные настройки редиректа дают дополнительную возможность получить синергетический эффект в поисковой оптимизации и увеличить количество органического трафика на релевантные страницы. Рассмотрим более подробно, как происходит настройка редиректа 301.
Что такое переадресация 301
Permanent Redirect 301 применяется с целью организации постоянной переадресации с неактуального доменного адреса или url отдельной страницы на рабочую версию. Редирект может понадобиться в связи с глобальным переносом сайта на другой домен, техническими изменениями в написании адреса, удалением страниц, необходимостью внутренней и внешней перелинковки. Один из вариантов использования перманентной переадресации – редирект с нескольких доменных имен, созданных в разных зонах, на один актуальный адрес. Грамотное использование редиректа позволяет перемещать контент без потерь в поисковой индексации, сохранить и даже увеличить прежний вес и позицию в выдаче.
Настроить код состояния HTTP 301 можно разными способами:
-
с помощью HTML и PHP;
-
через панель управления или плагины соответствующей CMS;
-
при помощи специальных скриптов (программ);
-
на уровне хостинг-провайдера;
-
внесением соответствующих записей в файлы .htaccess для сервера Apache или web.config для IIS.
Последний способ является наиболее простым и надежным. О нем чуть позже поговорим подробнее.
Альтернативные методы переадресации
- Редирект 302. Применяется в случае временной переадресации с одного url на другой. При его использовании поисковая система индексирует все доступные версии сайта или страницы. Объединения ссылочного веса и внутренних метрик на приоритетном ресурсе не происходит.
- 307 Temporary Redirect рекомендуется применять в исключительных случаях. Например, при техническом обслуживании сайта, когда он недоступен некоторое время.
- Обновления Meta Refresh выполняют переадресацию не на уровне сервера, а непосредственно на сайте. Пользователь сталкивается с временной задержкой (обычно около пяти секунд), после чего для перехода на нужную страницу должен принудительно запустить определенную команду. Этот метод часто приводит к падению посетительского интереса и проседанию поисковых индексов.
- Редирект rel=«canonical». Позволяет сохранить доступ посетителям ресурса к контенту дублирующихся страниц. При этом для поисковиков наличие команды canonical на одной из страниц говорит о том, что только она подлежит индексации в поиске.
В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи.
Не рекомендуется использовать постоянный редирект при временном переносе сайта или наличии серьезных проблем со старым доменным именем. Если адрес забанен или попал под поисковую фильтрацию, смена дислокации с применением переадресации не поможет избавиться от этих ограничений.
В каких случаях используется постоянный редирект 301
-
Смена доменного имени, перенос сайта. Необходимо произвести тотальную настройку переадресации со старого адреса на новый, чтобы все без исключения запросы к old_site.ru перенаправлялись на new_site.ru.
-
Изменение написания url определенных страниц в целях SEO-продвижения, смены CMS или по иным причинам. Требуется настроить редирект с site.ru/1hdkr5 на site.ru/page_adress.
-
Перенос разделов на субдомены. Необходимо сменить адрес www.site.ru/example на example.site.ru.
-
Для аккумуляции трафика с адресов, купленных в разных доменных зонах, на один приоритетный ресурс.
-
Исключение дублирующихся страниц из индекса.
-
Склейка зеркал сайта – вариантов сайта с идентичным контентом, но разным написанием адресов: site.ru, www.site.ru, https://site1.ru и т.д. В этом случае выбирается один приоритетный домен и на него настраивается редирект со всех остальных зеркал.
-
Удаление ранее существовавшей страницы. В этом случае пользователи обычно видят ошибку 404. Большое количество таких сообщений негативно воспринимается как пользователями, так и поисковиками.
-
Для быстрого перехода пользователя на мобильную версию ресурса со смартфонов и планшетных устройств.
Создание постоянной переадресации 301 через настройки и плагины CMS
В большинстве популярных конструкторов сайтов и CMS (OpenCart, Joomla!, Битрикс, Wix, Тильда) предусмотрена настройка редиректов с помощью встроенных инструментов. Если сайт создан с помощью WordPress, для настройки переадресации можно воспользоваться следующими плагинами:
-
Redirection — самый популярный плагин для настройки редиректов. Кроме основной функции обладает следующими возможностями: сбором статистики переадресаций, отслеживанием ошибок 404, поддержкой регулярных выражений.
-
Safe Redirect Manager — простой плагин, который также поддерживает регулярные выражения, практически не влияет на производительность сайта.
-
Quick Page/Post Redirect Plugin — еще один удобный инструмент оптимизации. Один из недостатков — отсутствие поддержки регулярных выражений. К ссылкам можно добавлять атрибут «nofollow».
-
Simple 301 Redirects. Данный модуль обладает одним недостатком – url для переадресации необходимо прописывать вручную.
Настроить Permanent Redirect 301 в Вордпресс можно и через редактирование файла .htaccess в разделе управления хостингом. Чтобы подключиться к нему, потребуется использовать FTP-клиент. Сама кодировка производится по общим правилам настройки переадресации в .htaccess.
Чтобы настроить 301 редирект в CMS OpenCart в файле .htaccess необходимо прописать:
RewriteCond %{QUERY_STRING} ^_route_=адрес_старой_страницы.html$ RewriteRule ^(.*)$ http://ваш_домен.ru/новой_страницы/? [R=301,L]
Для Битрикс кодировка будет выглядеть следующим образом:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.sng-it.ru$ [NC] RewriteRule ^(.*)$ http://sng-it.ru/$1 [R=301,L]
В Joomla настройки переадресации производятся через панель администратора в разделе «Компоненты» => «Перенаправление». Здесь можно не только установить правила редиректа, но и отслеживать страницы с битыми ссылками и перенаправлять их на корректные адреса.
С конструкторами сайтов все не так однозначно. Например, один из наиболее популярных CMS-конструкторов WIX не предоставляет возможности создания файла .htaccess.
Но настроить редирект 301 довольно просто в базовом редакторе.
Настройка 301 редирект в .htaccess
Файл с расширением .htaccess – это дополнительный конфигурационный файл web-сервера Apache. Его используют для настройки веб-сервера, а также для обработки различных URL-адресов.
Для настройки 301 редиректа в файле .htaccess чаще всего применяют одну из трех директив: Redirect, RedirectMatch или RewriteRule. Директивы относятся только к папке, где размещен .htaccess, а оттуда распространяются на дочерние папки.
Найти файл можно через панель управления хостинга либо использовать FTP-клиент. При любом варианте нужно включить отображение скрытых файлов.
Предварительная подготовка
-
Для создания 301 редиректа перейдите в панель управления вашего сайта.
-
Проверьте наличие .htaccess файла в корневом каталоге сайта (public_html, если используете WordPress). Если файл отсутствует, создайте его.
-
Рекомендуем все условия редирект записывать в блоке IfModule, дабы избежать ошибок при выполнении файла htaccess.
<IfModule mod_rewrite.c> </IfModule>
-
Перед тем как начать прописывать правила перенаправления, необходимо включить механизм преобразований (RewriteEngine) при помощи команды RewriteEngine On.
-
Хостинги применяют по умолчанию 302 или любой другой 3xx редирект. В связи с этим в правилах используются флаги. Рекомендуем дописывать в своих правилах [R=301,L].
Разберем наиболее распространенные варианты создания 301 редиректа через .htaccess.
Склейка зеркал сайта (www / без www)
Сайты http://name.site и http://www.name.site для поисковых систем являются разными. А по факту это разные адреса одного сайта.
В поисковой системе сайт по одному адресу будет проиндексирован, а по второму адресу зафиксирован как дубль, что может повлиять на продвижение ресурса. Для избегания дублей необходимо сделать так называемую «склейку» сайта, то есть прописать 301 редирект в .htaccess.
Если изначально в индекс поисковой системы попала версия «с www», в файл .htaccess добавляется редирект на «без www»:
RewriteCond %{HTTP_HOST} ^www.name.site$ [NC] RewriteRule ^(.*)$ http://name.site/$1 [R=301,L]
Если произошла обратная ситуация и необходима переадресация с без «www» на «www», то в файл прописывается:
RewriteCond %{HTTP_HOST} ^v name.site$ [NC] RewriteRule ^(.*)$ http://www.name.site/$1 [R=301,L]
Редирект с http на https для всего сайта
В случае перехода на защищенный протокол https для всего сайта, необходимо настроить перенаправление с http на https. Для этого в файл .htaccess добавьте:
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Если данная конструкция не сработает, попробуйте другой вариант:
RewriteCond %{HTTPS} =on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Если редирект не работает и в этом случае, попробуйте такой вариант:
RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} =/page.php RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
В результате пройдет перенаправление на https всех пользователей и поисковых систем.
Постранично
Бывают случаи, когда необходимо создать редирект на https всех страниц, кроме одной. В этом случае используют постраничный редирект:
RewriteEngine On RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} !^/page.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Для одной страницы
Для редиректа с http на https одной страницы (например page.php), в файл добавьте следующую конструкцию:
RewriteEngine On RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} =/page.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Редирект сайта с https на http
Если необходимо сделать 301 редирект всего сайта с https на http, в файл прописывается следующее:
RewriteCond %{SERVER_PORT} ^443$ [OR] RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://name.site/$1 [R=301,L]
Изменение домена
В том случае. если необходимо перейти на другой домен, при этом сохранив SEO-позиции, в файл .htaccess прописывают следующее:
RewriteCond %{HTTP_HOST} ^www.old_name.ru$ [NC] RewriteRule ^(.*)$ http://new_name.ru/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^old_name.ru$ [NC] RewriteRule ^(.*)$ http://new_name.ru/$1 [L,R=301]
Редирект на страницу с другим url (без параметров)
Иногда возникает ситуация, когда необходимо изменить url страницы, то есть перенести данные с одной страницы на другую страницу, при этом не потеряв вес страниц. В этом случае в файл .htaccess прописывают следующее:
RewriteRule ^(.*)old_page.html$ http://vash-sait.ru/new_page.html [R=301,L]
Редирект для url (с параметрами)
Если адрес содержит параметр (например, http://name.site/articles.php?section=1, где параметром является «section=1» ), то прописывают следующую конструкцию:
RewriteCond %{QUERY_STRING} section=1 RewriteRule ^index.php http://name.site/articles.php? [R=301,L]
Редирект с index.php на главную страницу
В тех случаях, когда главная страница сайта может быть недоступна по нескольким адресам одновременно, применяют следующую конструкцию:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/ RewriteRule ^index.php$ http://name.site/ [R=301,L]
Редирект со страниц со слешем на без слеша (для всего сайта)
Для избегания дублей в файле .htaccess используют следующую конструкцию:
RewriteCond %{REQUEST_URI} !? RewriteCond %{REQUEST_URI} !& RewriteCond %{REQUEST_URI} != RewriteCond %{REQUEST_URI} !. RewriteCond %{REQUEST_URI} ![^/]$ RewriteRule ^(.*)/$ /$1 [R=301,L]
Или более короткий вариант:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$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 редирект с 404 Not Found
Код 404 Not Found (страница не найдена) присваивается удаленной или несуществующей странице на сайте. Создание постоянного перенаправления с таких страниц актуально для контентных сайтов и крупных интернет-магазинов, где страницы часто удаляются по естественным причинам. Тогда возникает потребность перенаправить посетителей на одну из главных страниц сайта, чтобы они не уходили с ресурса при виде ошибки.
301 редирект для страниц 404 Not Found сделать совсем не сложно. Например, этот код перенаправит со всех 404-страниц на главную:
ErrorDocument 404 http://www.site.com/301.html
Однако делать такие редиректы в массовом порядке не рекомендуется, так как это может испортить SEO-статистику всего ресурса.
Финальный вид файла .htaccess
Пример файла htaccess, после добавления в него редиректов:
Options -Indexes ErrorDocument 404 /404.php php_flag register_globals off php_value pcre.recursion_limit 1000 #Условия 301 редиректа <IfModule mod_rewrite.c> RewriteEngine On # склейка зеркал RewriteCond %{HTTP_HOST} ^my_site.ru RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^my_site.ru RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.my_site.ru RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.my_site.ru$ [NC] RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.my_site.ru RewriteRule ^(.*)$ https://my_site.ru/$1 [R=301,L] # без слеша RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L] </IfModule> php_value default_charset utf-8 AddType 'text/html; charset=utf-8' .html .htm .shtml
Синтаксис для регулярных выражений в .htaccess
. |
точка заменяет произвольный символ |
[abc] |
обозначает перечень знаков, совпадающих с буквами a, b, или с |
[^abc] |
список символов вне указанного диапазона (кроме a, b, с) |
* |
указывает на то, что предыдущий знак может повторяться 0 или больше раз |
[abc]* |
команда найдет идущие подряд символы из заданного набора |
[^abc]* |
приводит к противоположному эффекту |
.* |
заменяет любой набор символов |
«.*» |
ищет все подстроки между кавычками |
^ |
начало строки (когда используется в начале выражения) |
$ |
означает конец строки |
w |
цифра, буква или подчеркивание _ |
d |
заменяет любую цифру |
D |
может заменить любой знак, кроме цифры |
[0-9] |
для замены любой цифры |
[a-z] |
для всех букв от a до z в нижнем регистре |
[A-Z] |
для каждой буквы от A до Z в верхнем регистре |
[a-zA-Z] |
любая буква от a до Z во всех регистрах |
[a-Z] |
аналогично |
Важно учитывать, что настройка редиректа путем редактирования файла .htaccess доступна исключительно для веб-серверов Apache.
Другие способы создания переадресации 301
Через PHP
Данный вариант подойдет тем, кто хорошо разбирается в web-программировании и PHP. Необходимо открыть файл index.php в корне CMS-движка и прописать там:
if($_SERVER['REQUEST_URI'] == "/index.php") { header("Location: /",TRUE,301); exit(); }
(в первой строке укажите старый url, а во второй — новый)
Второй способ — перенаправление при помощи отправки заголовков (скрипта):
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.newdomain.ru/newdir/newpage.htm"); exit(); ?>
ASP-редирект
<%@ Language=VBScript %> <% Response.Status="301 Moved Permanently" Response.AddHeader "Location", "http://www.new-url.com" response.end %>
ASP.NET редирект
Найдите в корне своего сайта файл web.config и вставьте в секцию синтаксис:
<script runat="server"> private void Page_Load(object sender, System.EventArgs e) { Response.Status = "301 Moved Permanently"; Response.AddHeader("Location","http://www.new-url.com"); } </script>
ColdFusion редирект
<.cfheader statuscode="301″ statustext="Moved permanently"> <.cfheader name="Location" value="http://www.new-url.com">
JSP (Java) редирект
Данный способ подойдет для небольшой корректировки простых сайтов. Код можно прописать лишь в одном файле, а сам файл добавить на все нужные страницы, указав:
<script type="text/javascript" src="redirect.js"></script> <script type="text/javascript"> location="https://yandex.ru"; </script>
CGI-скрипт на PERL
$q = new CGI; print $q->redirect("http://www.new-url.com/");
Ruby on Rails
def old_action headers["Status"] = "301 Moved Permanently" redirect_to "http://www.new-url.com/" end
Редирект в Nginx
if ($host = 'www.domain.com' ) { rewrite ^(.*)$ http://domain.com$1 permanent; }
HTML-редирект
Этот способ подойдет для небольших статических сайтов, когда требуется настроить переадресацию для одной страницы. Для этого необходимо добавить специальный мета-тег внутри кода HTML. Пример записи редиректа на другой ресурс после 5-секундной задержки:
<meta http-equiv="refresh" content="5;https://livepage.pro">
Если поставить значение 0 вместо 5, то переадресация на https://livepage.pro произойдет моментально.
Однако для больших сайтов HTML-перенаправление делать сложно и затратно по времени, поэтому лучше отдать предпочтение другому варианту.
Редирект 301 в панелях управления сервера
Большинство панелей управления сервера предоставляют возможность настройки переадресации с кодом 301. Рассмотрим варианты решения этой задачи на примере двух популярных ПУ для VDS.
Cpanel
Нужно перейти в блок «Домены» => «Перенаправления». В появившемся окне выполнить следующее:
-
В строке «Тип» выбрать «Постоянный 301».
-
В строке «https://www» из выпадающего списка выбрать домен сайта (например, example.ru).
-
В строке «Перенаправляет на» указать для домена адрес http://example.ru.
-
В блоке «Перенаправление www» поставить галочку напротив «Перенаправлять только с www».
-
Сохранить изменения кликом на «Добавить».
ISPmanager
В этой панели можно вручную править файлы nginx.config или .htaccess, но есть и встроенный механизм переадресации. Например, для настройки редиректа на https/http нужно снять галочку с соответствующего пункта в разделе «WWW-домены».
Автоматическое создание переадресации
При отсутствии знаний и опыта самостоятельной настройки редиректа можно воспользоваться сервисами автоматической генерации:
-
Seomagnifier — 301 для www;
-
301 Redirect Code Generator Tool — для доменов и страниц;
-
Generate .htaccess— для страниц, разделов сайтов, доменов.
Проверка корректности настроек 301 редиректа
Самый простой способ проверки переадресации – ручное тестирование. Для этого необходимо вставить в адресную строку браузера url сайта или страницы, с которой настроено перенаправление. Если при открытии будет доступен ресурс, на который настроен редирект, то переадресация выполняется правильно.
Для автоматической проверки можно воспользоваться специальными сервисами:
-
Redirect Checker, bertal.ru или Header Checker Tool для тестирования отдельных страниц;
-
программой Screaming Frog Seo Spider, способной просканировать весь сайт.
Существует ряд ошибок, которые следует избегать при настройке редирект 301:
-
использование перенаправлений между страницами сайта без изменения их url в ссылках;
-
установка временной переадресации вместо постоянной;
-
неправильный выбор типа редиректа;
-
перенаправление файла robots.txt;
-
непонимание разницы между rel=canonical и кодом 301;
-
редирект на нерелевантный контент;
-
переадресация, которая не приводит к 200-й странице.
Стоит отметить проблему создания цепочки ссылок, которая может привести к появлению циклического редиректа — ошибки с кодом «ERR_TOO_MANY_REDIRECTS». Наиболее распространенные причины возникновения такого бага – неправильная настройка в процессе создания переадресации, вирусная атака, слишком длинная цепочка редиректов. Не рекомендуется настраивать редирект, содержащий более пяти адресов. Оптимальной является прямая переадресация со старого на новый url.
Заключение
Использование редиректа 301– очень важный способ поисковой и пользовательской оптимизации веб-ресурса. Использовать его следует с осторожностью. Неправильная настройка может привести к сбоям в работе сайта и потере поисковых позиций.
Инструментов для настройки корректной работы Permanent Redirect 301 существует достаточно много. Наиболее удобный и правильный – внесение записей в файл .htaccess. Недостаток этого метода в том, что он доступен только для веб-серверов Apache. При использовании IIS придется настраивать web.config. Для создания сложных правил переадресации более всего подходит PHP, но в этом случае без помощи программиста не обойтись. Еще одним вариантом настройки 301 редиректа может быть обращение к хостинг-провайдеру с целью подключения услуги web-форвардинга.