Детали ошибки 301 moved permanently

Здравствуйте, уважаемые друзья и гости блога! Сегодня пойдет речь о такой странной вещи на сайте, как ошибка 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 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 и как ее устранить?

На этом пока все. Всем удачи и благополучия!

Команда SeoProfy подготовила пошаговое руководство для вебмастеров, в котором рассказала и показала все детали и нюансы использования 301 редиректа.

Редирект — это способ перенаправить пользователей и поисковых систем на другой URL отличный от того, который они первоначально запросили. Ниже приведены описания некоторых из наиболее часто используемых видов перенаправления.

301 Moved Permanently

301 редирект является постоянным редиректом, который передает около 90-99% ссылочного веса. Данный редирект указывает, что страница перемещена по новому адресу и старый url следует считать устаревшим.

302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)

302 редирект — временный редирект. Данный редирект передает 0% от ссылочного веса и, в большинстве случаев, не должен использоваться. На данный момент интернет работает по протоколу HTTP, который и определяет, как обрабатывать URL-адреса. В двух версиях этого протокола этот ответ сервера имеет разный статус ответа:

  • HTTP 1.0: 302 ответ сервера это «Moved Temporarily » — текущий документ временно перемещен на другой URL.
  • HTTP 1.1: произошло изменение ответа сервера на «Found» — текущий документ найден.

307 Moved Temporarily (HTTP 1.1 Only)

307 редирект в протоколе HTTP 1.1 стал приемником 302 редиректа. В то время как основные поисковые боты начнут рассматривать его как аналог 302, для почти всех случаев лучше всего использовать 301. Исключением из этого правила является, когда контент действительно переехал только временно (например, во время технического обслуживания) и поисковые системы уже понимают, что ваш сервер совместим с HTTP 1.1. Но, так как практически невозможно определить, действительно ли поисковые системы поняли, что ваш сервер совместим с этим новым протоколом, то лучше использовать 302 редирект для контента, который был временно перемещен.

Другие виды редиректов

Существуют также и другие виды редиректов: Meta Refresh или с помощью JavaScript — которые выполняются на уровне страницы, а не на уровне сервера. Вот как выглядит типичный редирект Meta Refresh:

meta http-equiv="refresh" content="5;url=http://www.seoprofy.ua/" />

Но, данные редиректы желательно использовать крайне редко, так как ими очень любят злоупотреблять спамеры и дорвейщики. Кроме этого, при использовании этих редиректов ссылочный вес почти не передается.

Канонизация домена сайта или как склеить домен?

Чтобы склеить домен с www на без www:

RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]

RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

Для склейки с без www на с www:

RewriteCond %{HTTP_HOST} ^site.com$ [NC]

RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Для того чтобы правильно выбрать на какой из вариантов склеивать, желательно посмотреть:

  • который из этих вариантов больше находится в ТОПе
  • у какого из вариантов больше страниц в индексе

Канонизация слеша в конце урла

При проектирование сайта важно определиться с одним форматом использование слеша в конце урла, так как для поисковых систем 2 урла вида

  • http://www.site.com/cat1/
  • http://www.site.com/cat1

являются разными. Поэтому после того как вы определились, как именно у вас будет на сайте, необходимо прописать следующие редиректы:

Для того чтобы удалить слэш в конце:

RewriteCond %{HTTP_HOST} (.*)

RewriteCond %{REQUEST_URI} /$ [NC]

RewriteRule ^(.*)(/)$ $1 [L,R=301]

Для того чтобы добавить слэш в конец адресной строки:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*[^/])$ $1/ [L,R=301]

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

Redirect 301 /oldpage.html http://www.site.com/newpage.html

Редирект для дублей главной страницы:

Этот код гарантирует, что любой адрес домашней страницы, который включает несколько версий прямых ссылок имени страницы, например, default.htm или index.html, будет перенаправлен на каноническую главную страницу, http://www.site.com:

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]

Редирект каталога

Если структура каталога у вас отображается в url-ле, то при перекаталогизации у вас, соответственно, будут изменяться и url. В таком случае необходимо прописать следующий редирект:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]

Но, если url старого каталога начинается сразу после домена: www.site.com/old-catalog/, то необходимо воспользоваться следующим кодом

RewriteRule old-catalog /(.*) / old-catalog /$1 [R=301,L]

Редирект при смене расширения файлов

Если вы вдруг переехали на другую платформу или CMS, и при этом у url-ов изменились только расширение, то в этой случае вам поможет вот такой редирект:

RedirectMatch 301 (.*).php$ http://www.site.com$1.html

Примеры использования для защиты сайта от множественных дублей страниц

Редирект с разных доменов и субдоменов

Если вы купили несколько доменов в разных доменных зонах или разрабатывали новый сайт и повесили его на субдомен, а этот субдомен забыли закрыть от индексации, то необходимо сделать редирект на основной домен:

RewriteCond %{HTTP_HOST} !^www.site.com

RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Таким образом, все домены типа www.site.ru, www.site.net, test.site.com будут переадресовываться на сайт www.site.com.

Как удалить несколько слешей/тире в урле

Иногда «по случайности» в урле могут появиться по несколько слешей, например, www.site.com/catalog////page-1.html. В таких случаях необходимо делать 301 редирект на страницу с одним слешем www.site.com/catalog/page-1.html :

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$

RewriteRule . %1/%2 [R=301,L]

Аналогично, можно склеить в урле несколько дефисов в один: с www.site.com/catalog/page—1.html на www.site.com/catalog/page-1.html:

RewriteCond %{REQUEST_URI} ^(.*)—(.*)$

RewriteRule . %1-%2 [R=301,L]

Как сделать редирект с любого урла на url только в нижнем регистре

Поскольку поисковыми системами регистр букв учитывается, то при проектировании сайта желательно, чтобы все урлы были в нижнем регистре. Однако, если вы изначально упустили данный момент, то лучше всего воспользоваться следующим кодом для редиректа на уровне php-скрипта:

$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();

}

Как переехать на новый домен? Оптимальная стратегия 301 редиректа

Оптимальной стратегией переезда на новый домен, учитывая пожелания 2-ух основных поисковых систем рунета Яндекс и Google, это:

  • постраничный 301 редирект со старого сайта на новый.
  • при этом для файла robots.txt редирект не делаем, а прописываем в нем директиву Host на новый домен.

Тогда код для настройки редиректа на старом сайте может иметь следующий вид:

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

Генерация 301 редиректов

Если вы не очень технически подкованы, то можно воспользоваться сервисами генерации базовых редиректов:

http://www.webconfs.com/htaccess-redirect-generator.php

http://www.rapidtables.com/web/tools/redirect-generator.htm

На таких сервисах можно только подставлять собственные данные и сразу получать готовый код для редиректов между доменами, директориями или урлами.

Как проверить 301 редирект

После каждого изменение логики работы 301 редиректа необходимо проверять работоспособность сайта:

  • вообще ли работает сайт: зайти на главную страницу)
  • походить по основным разделам и страницам сайта

Также для более тщательной проверки отработки редиректов можно использовать следующие сервисы:

http://bertal.ru — максимально подробная информация по ответам сервера.

http://www.internetmarketingninjas.com/header-checker/.

Как и когда лучше использовать 301 редирект vs Canonical

Хотя есть некоторые нюансы, Google предоставляет некоторые четкие правила, для того чтобы он понимал, что именно мы хотим сказать. В очень простой ситуации вот, как понимают данные инструкции поисковые системы:

301 — Эй, Поисковики: моя страница уже не здесь, и она навсегда переехала на новую страницу. Пожалуйста, удалите старую страницу из индекса и передайте её вес на новую страницу.

Canonical — Эй, Поисковики (так для большинства поисковых систем): у меня есть несколько версий этой страницы (или содержания), пожалуйста, индексируйте только ту версию страницы, на которую стоит canonical. Я буду держать другие страницы доступными для людей, чтобы они могли их видеть, но, Поисковик, не включай их в свой индекс и пожалуйста, передай вес на мою предпочтительную страницу.

Когда лучше использовать 301 редирект

  • По умолчанию — это предпочтительный метод
  • Для страниц: если страница навсегда переехала или была заменена на новый адрес
  • Для доменов: если сайт переехал на новый домен (продажа сайта, ребрендинг и т.д.)
  • Для 404 страниц и страниц с контентом, который потерял свою актуальность (при условии соответствующего содержания). Например, если удален товар из определенного каталога, то можно сделать редирект на похожий товар или на url-категории, к которой принадлежал данный товар.

Когда лучше не использовать 301 редирект?

  • Когда 301 редиректы не могут быть реализованы, или их внедрение займет слишком много времени
  • Дублированный контент, но вы хотите сохранить обе страницы для людей (например, показывать на разных урлах разный размер одежды)
  • Страницы с несколькими разными url по сути одной страницы (например, сортировки каталога, отслеживания партнерских ссылок, …)
  • Кросс-доменов, когда оба сайта похожи, но похожий контент нужно оставить на каждом из доменов.

Итого

В общем оба варианта позволяют сохранить ссылочный вес, и они будут аналогично рассматриваться Google. Но в целом, 301 редирект является более предпочтительным методом.

Ошибки при использовании редиректов

  • Любой многошаговый редирект. Если есть возможность, то желательно не допускать многошаговых редиректов, чтобы он и быстрее сработал, и передалось максимум ссылочного веса.
  • Использование неправильного типа редиректов. При выборе типа редиректа необходимо учитывать нюансы каждого из них.
  • Внедрение внутренних редиректов без смены ссылок на новые адреса. После внедрения всех редиректов у себя на сайте, необходимо проверить, чтобы каждая страница вашего сайта уже ссылалась на новую и внутри сайта у вас не было ссылок на страницы, с которых происходит редирект.
  • Редирект на нерелевантные страницы/контент. Редирект всегда желательно проставлять на максимально релевантную страницу: или на похожую страницу, или на ветку каталога/раздела, к которому принадлежала данная страница.
  • Неправильный выбор использования rel=canonical vs 301 редирект.
  • Редирект, конечной точкой которого является не 200-я страница. Редирект должен вести на правильно работающую страницу с 200 ответом сервера. Иначе, желательно не сбивать поисковых роботов и отдавать 404 ответ.
  • Редирект robots.txt. Так как, например, нужно прописывать директиву Host для Яндекса при склейке доменов.

Надеемся, что данное руководство станет вам шпаргалкой и помощником для использования 301-го редиректа для вашего сайта.

При работе с веб-ресурсами возникают ситуации, когда происходит удаление, перенос или изменение 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

В каких случаях используется постоянный редирект 301

  1. Смена доменного имени, перенос сайта. Необходимо произвести тотальную настройку переадресации со старого адреса на новый, чтобы все без исключения запросы к old_site.ru перенаправлялись на new_site.ru.

  2. Изменение написания url определенных страниц в целях SEO-продвижения, смены CMS или по иным причинам. Требуется настроить редирект с site.ru/1hdkr5 на site.ru/page_adress.

  3. Перенос разделов на субдомены. Необходимо сменить адрес www.site.ru/example на example.site.ru.

  4. Для аккумуляции трафика с адресов, купленных в разных доменных зонах, на один приоритетный ресурс. 

  5. Исключение дублирующихся страниц из индекса. 

  6. Склейка зеркал сайта – вариантов сайта с идентичным контентом, но разным написанием адресов: site.ru, www.site.ru, https://site1.ru и т.д. В этом случае выбирается один приоритетный домен и на него настраивается редирект со всех остальных зеркал.

  7. Удаление ранее существовавшей страницы. В этом случае пользователи обычно видят ошибку 404. Большое количество таких сообщений негативно воспринимается как пользователями, так и поисковиками.

  8. Для быстрого перехода пользователя на мобильную версию ресурса со смартфонов и планшетных устройств.

Создание постоянной переадресации 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 настройки переадресации производятся через панель администратора в разделе «Компоненты» => «Перенаправление». Здесь можно не только установить правила редиректа, но и отслеживать страницы с битыми ссылками и перенаправлять их на корректные адреса.

.htaccess

С конструкторами сайтов все не так однозначно. Например, один из наиболее популярных CMS-конструкторов WIX не предоставляет возможности создания файла .htaccess.

Настройка 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 редирект - Cpanel

Нужно перейти в блок «Домены» => «Перенаправления». В появившемся окне выполнить следующее:

  • В строке «Тип» выбрать «Постоянный 301».

  • В строке «https://www» из выпадающего списка выбрать домен сайта (например, example.ru).

  • В строке «Перенаправляет на» указать для домена адрес http://example.ru.

  • В блоке «Перенаправление www» поставить галочку напротив «Перенаправлять только с www».

  • Сохранить изменения кликом на «Добавить».

ISPmanager

Как сделать 301 редирект в 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-форвардинга.

Содержание

  • 1 Что такое 301 редирект для сайта
  • 2 Для чего нужен 301 Redirect
    • 2.1 Адрес страницы изменен
    • 2.2 Склейка зеркал
    • 2.3 Смена домена
    • 2.4 Исправляем технический бардак
    • 2.5 301 редирект вместо 404 Not Found
  • 3 Когда не надо использовать код сервера 301 и другие нюансы
    • 3.1 Временная переадресация при неуверенности
    • 3.2 Спасение от фильтров стоит ли?
    • 3.3 Нюансы использования 301 редиректа
  • 4 Как настроить 301 Редирект в .htaccess на Apache
    • 4.1 301 Редирект с www на без www для склейки зеркал
    • 4.2 301 Redirect без www на www
    • 4.3 301 Редирект с https на http и наоборот в Htaccess
    • 4.4 Универсальный редирект с index.php и .html на ссылку без них
    • 4.5 301 редирект со страницы на страницу
  • 5 Redirect в PHP
    • 5.1 Как убрать дубль адреса сайта в адресной строке с помощью ПХП
    • 5.2 Как убрать дубль страницы со слешем с помощью PHP
  • 6 Особенности настройки Permanent Redirect на nginx.
    • 6.1 301 редирект на nginx с www на без www
    • 6.2 Permanent Redirect 301 на nginx с домена без www на домен с www
    • 6.3 Redirect 301 в nginx.conf со страницы с index.php на адрес без index.php
  • 7 Как сделать Редирект с http на https без htaccess — ковыряем web.config
  • 8 Когда редирект с https на http не работает — что делать?
  • 9 301 moved permanently что это и как исправить
  • 10 302 Редирект — временное переселение
    • 10.1 Чем отличается 302 Редирект от 301?
  • 11 Сервисы для контроля Редиректов

Сегодня мы поговорим о редиректе и постараемся разобрать данный вопрос максимально широко и в то же время не распыляться. Важность редиректов в сео просто огромна, в то же время велики и риски проблем из-за неправильной переадресации. Вопрос важный, сложный и очень нужный, так что читаем далее!

Что такое 301 редирект для сайта

Что такое 301 редирект? Даже не так. Что такое Redirect? Это команда поисковому роботу перенаправлять посетителя на другую страницу, которая была перемещена в другое место. Цифра 301 — это код, который говорит об окончательном перемещении страницы в новую локацию. Ведь когда мы переходим на какую-то страницу и нам выдается ошибка, мы видим перед собой код этой ошибки и расшифровку. Например, код 404 говорит нам — Not Found, что означает — страница не найдена, а 505 ошибка сообщает, что ответ от сервера не был получен. Но если вышеописанные ошибки видны посетителю на открытой странице браузера, то шифры перенаправления видят только роботы, которые и направляют гостя по другой ссылке (если, конечно, редирект был настроен правильно). Вот как раз новую ссылку, меняющуюся в адресной строке браузера посетитель и заметит. То есть 301 редирект перебрасывает пользователя с одной страницы на другую, не останавливаясь на промежуточном адресе, доводя до конечного места локации контента.

Официальное название редиректа — Permanent Redirect 301, используется как инструмент в SEO. Код прописывается в файлах на сервере, где расположен сайт, и при обращении по ссылке, которая указана в редиректе как та, с которой нужно увести посетителя, сервер отдает системе код 301 с новыми данными для отображения ссылки и «пометкой» — перемещен на другой адрес (moved permanently).

301 рдирект - основы

Каким образом происходит процесс перемещения? С помощью кода в файлах на сервере с сайтом размещается специальный код, который роботы поисковых систем считывают и выполняют. В этом коде обязательно присутствуют константы: откуда переместить и куда. Причин для использования 301 редиректа на сайте может быть множество, рассмотрим основные из них в этой статье, ведь, возможно, что какой-то способ вам понабиться, и вы им воспользуетесь.

Я подготовил мощный мини-курс по SEO текстам, которые сами выходят в ТОП! Курс записан в формате пошаговых инструкций и в данный момент доступен БЕСПЛАТНО, вместо 2999, так что не упустите! Ссылка на скачивание мини-курса.

Для чего нужен 301 Redirect

301 редирект является тем видом перенаправления, который поисковые системы признают как правильное решение для перемещенных страниц сайта. Поэтому при настройке Permanent Redirect никаких изменений в ранжировании или наложений штрафных санкций не происходит. Это естественная переадресация. Какое-то время назад этот способ переадресации использовался вебмастерами для выхода из под фильтров, но не факт, что на сегодняшний день этот способ может помочь. Хотя от определенных фильтров иногда спасает (ссылка).

На сегодняшний день основными показаниями к использованию 301 Редиректа являются ситуации:

  • изменения адреса страницы сайта, даже на одну букву или символ;
  • склейка зеркал (домен с www и без www, домены в разных зонах);
  • смена домена интернет-ресурса;
  • борьба с дублями из-за технического бардака.

Где делают Permanent Redirect 301? Способы зависят от возможностей вебмастера и его доступа к данным. Поэтому создать 301 Редирект можно через htaccess, php, настройки сервера, javascript. Естественно, что использовать все способы одновременно не надо.

Место использования 301 редиректа

Адрес страницы изменен

Самый простой и распространенный вариант наломать мелких дров в админпанели сайта и создать ошибки при переходе по ссылке — это откорректировать уже проиндексированный неЧПУ. Когда формируется новая страница сайта, ей присваивается номер и адрес из латинских букв. Первое время не очень красивая ссылка никого не смущает, но когда обнаруживается, что можно сделать покрасивше — руки так и чешутся откорректировать url к более человекоподобному:). И тут наступает момент, когда в вебмастере гугла и яндекса обнаруживается огромное количество дублей. Особенно, когда была видоизменена категория сайта в структуре. Google, например, после обновления базы, то есть когда робот заново обошел сайт с начала до конца, покажет в панели вебмастера новые адреса страниц, но старые тоже оставит в поиске, сделав замечание владельцу, что у него на сайте присутствуют одинаковые мета-данные, которых на самом деле там и нет. Переход по старому адресу из поисковой системы выдаст пользователю ошибку 404 (если конечно она правильно настроена), тем самым убив желание потенциального посетителя переходить далее на сайт.

Итог бездумной корректировки URL? Поисковая система видит отказ пользователя и понижает сайт в выдаче по поисковому запросу. Катастрофа. А все из-за какой-то корявой ссылки, которая изначально осталась незамеченной и никого, кроме самого «вебмастера» совершенно не смущала. Но эту ситуацию можно исправить как раз 301 редиректом. Как сделать 301 редирект с одной страницы на другую (со старого url на новый), расскажем дальше.

Склейка зеркал

Зеркала — это, например, когда сайт один, а доменов несколько. Обычно, компании, работающие на бренд, выкупают сразу все доступные зоны, чтобы никто не смог воспользоваться их именем. Также присоединяются названия адреса сайта через дефис и без него. Но даже без такой катавасии, на вашем сайте 100% есть зеркала! В данном случае это написание адреса сайта с www и без, а также доступ через https. В любом из этих случаев делается 301 redirect, причем еще при создании вебресурса, иначе от головной боли с дублями страниц потом тяжело избавится. Редирект 301 с www на без www и наоборот (если основным сайтом является www.имя_домена.ru), а также c http на https (сомневаюсь, что часто бывает перенаправление наоборот), включая разные доменные зоны, обязателен! Для проверки наличия основного зеркала, помогут панели вебмастера поисковых систем.

КлеиСклейка зеркал

Смена домена

По разным причинам сайту нужно переехать на новый домен. Чаще всего компания делает ребрендинг, а название домена не отвечает поставленным целям. Ради благозвучия и соответствия названия домена бренду, сайт переезжает. Чтобы не потерять уже постоянных посетителей и поставить перед фактом поисковых роботов, сеошники делают 301редирект со старого домена на новый. Очень важно, чтобы поисковые системы получали ответ от сервера код 301, а не 404 или 302. Работа окажется легкой, если сайтик небольшой (визитка, лэндинг, промо-страница) и понадобится много труда для огромного интернет-магазина, потому что перенаправление на главную страницу здесь не подойдет. Каждый старый URL привязывают к аналогичному новому (постраничная переадресация).

Исправляем технический бардак

Здесь вариантов устроить технический бардак уйма начиная с нарушений элементарных правил создания страниц и заканчивая дублями, которые создаются плагинами на сайте (переводчики, комментарии, поиск по сайту). Сюда же можно отнести мобильные версии выдачи страниц (с этим в последнее время хлопот немало), но их лечат прописыванием canonical. Дубли создаются не только по вине вебмастера, есть и вынужденные. Но случаи по неопытности первого, все же больше наносят вреда. Некоторые прячут такие погрешности закрытием от индексации, но лучше использовать 301 Permanent Redirect и тогда робот точно поймет, что хочет ему сказать человек.

301 редирект вместо 404 Not Found

Не торопитесь сразу убирать 404 (Страница не найдена) и везде проставлять 301 Редирект. Тут важно прочувствовать разницу. Код 404 Not Found обязателен на страницах, которые удалены или никогда не существовали, а вот с битыми ссылками можно бороться 301 Редиректом! Если страница, которую ищет пользователь, существует, зачем отсылать его по древу сайта для ее поиска? Найдена битая ссылка на какую-то страницу? Перенаправляем по правильному адресу кодом 301 и посетитель даже не догадается о том, что ссылка уже была нерабочая.

не надо делать редирект

Когда не надо использовать код сервера 301 и другие нюансы

Есть моменты когда так и хочется воспользоваться 301 редиректом на сайте, но не всегда цель оправдывает средства. Вообще, желательно, во внутренних ресурсах сайта использовать код 301 только в случаях крайней необходимости. Иначе, бездумно посылая робота со ссылки на ссылку, можно создать бесконечное циклическое перенаправление, которое просто убьет весь сайт. И поисковый робот бросит все старания найти место размещения контента, чем навредит репутации ресурса в целом, не доведя посетителя до конца.

Временная переадресация при неуверенности

Permanent Redirect 301 (Перманентный редирект) используется для указания роботам окончательного решения. Что это значит? А это говорит о том, что если вы не уверены навсегда ли будет перемещена страница, тогда безопасней 301 редирект не делать. Redirect склеивает странички, и робот уже просто не видит первой, а это значит, что она канула в лету безвозвратно. Для временной переадресации используют другие способы, когда при принятии решения вернуть все на свои места, не вызовет никаких проблем.

Спасение от фильтров стоит ли?

Когда-то 301 редиректом спасались от фильтров поисковых систем, но нет 100% гарантии, что фильтр в будущем не переместится на новый домен. Создавая постоянное перенаправление на новый сайт, перемещается ТИЦ с PR. Мною замечено, что с алгоритмом «Пингвина» еще можно помудохаться, а вот от АГС такие манипуляции не спасут однозначно. Поэтому сейчас Permanent Redirect не так популярен для спасения от фильтров ПС, но зато помогает не потерять заслуженные позиции. Чего вполне достаточно для усердных вебмастеров.

Нюансы использования 301 редиректа

  1. Исправлять ссылки ведущие извне 301 редиректом вполне нормально, потому что отредактировать их у нас нет возможности. А вот кривые внутренние пути надо максимально исправлять вручную другими, более щадящими способами.
  2. Настраивая redirect, нужно быть предельно внимательным, чтобы не захватить какие-нибудь системные ссылки из корневых каталогов или пути к папкам и плагинам.
  3. Для поиска ссылок, нуждающихся в исправлении, необходимо использовать инструменты поисковых систем Google и Яндекс Вебмастер. Очевидные дубли страниц видны в Гугл Вебмастер во вкладке Вид в поиске > Оптимизация HTML, а в Яндексе — Индексирование — Статистика.
  4. Между нашими главными поисковыми гигантами есть одна огромная особенность: если Google после обновления базы самостоятельно уберет исправленные ошибки из панели вебмастера, то Яндекс этого может вообще не сделать. Это дело можно поправить прописыванием в robot.txt запрета на индексирование или подать ручной запрос в поддержку на удаление из базы плохих ссылок. В 2016 Вебмастер Яндекса перешел на новый уровень, расширив функционал системы. Правда, некоторые возможности еще не работают, но уже функционируют корректно бывшая аддурилка, а теперь запрос на внеочередной переобход страницы роботом, проверка мобильности страниц, удобная статистика по ключевым словам с разбивкой на ТОП 3, 10, 50.

Как настроить 301 Редирект в .htaccess на Apache

Одним из самых старых и распространенных способов запустить 301 редирект на Apache является прописывание специального кода в корневом каталоге сайта в файле .htaccess. Неоспоримым преимуществом этого метода является быстрая загрузка команд сразу с сервера еще до запуска скриптов без дополнительной на него нагрузки. Не зря перед названием htaccess я поставил точку — это файл без названием с расширением. Знаю, непривычно, но этот файлик есть в корневой папке сайта или, по крайней мере, должен быть.

301 редирект на Apache

Как найти htaccess? Открываем FTP-клиент (например, Fillezilla), переходим на каталог сайта и опля! Не случилось опля? Нет такого файла? Попробуйте проверить настройки ftp-клиента. К примеру, в FilleZille нажмите на вкладку Сервер и выберите пункт Принудительно отображать скрытые файлы. Ничего не появилось? Значит, создаем новый файл на свое компьютере. Создаем .txt-шный файл, вписываем нужный код и сохраняем. И тут паника: Windows не сохраняет файл с расширением .htaccess и без имени! Катастрофа, думаете вы. Вовсе нет. Забрасываете файл с расширением тхт через ftp-менеджер в корневую папку сайта и там переименовываете. Ура! Файл .htaccess создан. Теперь, при внесении каких-либо изменений в него, достаточно его просто открыть в блокноте через ftp-клиент или в NotePad++.

А какой код писать, как настроить 301 редирект в htaccess? А вот в зависимости от того, для чего он нам нужен, и будем моделировать код перенаправления. В первую очередь, Permanent Redirect 301 прописывается в самом начале страницы htaccess после строки «R ewriteEngine On», для того чтобы команда обрабатывалась первой. Сервер читает файл построчно сверху. Ниже привел популярные коды для перенаправления.

301 Редирект с www на без www для склейки зеркал

Заранее оговорюсь — во всех примерах в команде R ewriteCond лишний пробел, уберите его перед копированием!

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

301 Redirect без www на www

R ewriteCond %{HTTP_HOST} ^site.ru$ [NC]
R ewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

варианты редиректа

Чувствуете разницу? R ewrite переводится как переписать, Cond — условие, Rule — правило. А с виду для русскоязычных можно запомнить: кто рулит? Рулит вторая строчка, то есть указываем тот путь, куда перенаправляем. Каждый второй вариант приведенных выше правил лучше первого тем, что при перенаправлении будет проверяться не только наличие www в адресе сайта, а и соответствие названия домена указанному. Таким образом, исключается возможность доступа посторонних лиц к файлам на сервере, например, через IP-адрес. А это, как-никак, дополнительная защита.

А теперь расшифровка всех символов в коде 301 редиректа:

R ewriteCond — искомое условие, то есть ссылка, которую, в нашем случае, нужно перенаправить.

R ewriteRule — правило, которое необходимо выполнить с тем условием, которое указано в предыдущей строке.

Мета-символы:

^ — начало строки;

$ — конец строки;

! — отрицание;

— за экранирующим слешем считать метасимволы обычными символами;

. — любой символ в количестве одной штуки:)

() — разбиение на группы;

? — повторение символа от 0 до 1 раза;

* — повторение от 0 до 65536;

+ = повторение от 1 до 65536;

[] — дополнительные опции;

NC (NOCASE) — отключить проверку регистра;

R=301 (Redirect 301) — вернуть ответ браузеру с кодом 301;

L (LAST) — остановка процесса перенаправления, указывая на конечность текущего местоположения данных.

%{QUERY_STRING} — набор переменных для php.

301 Редирект с https на http и наоборот в Htaccess

Небольшим кодом делаем перенаправление с https на http в htaccess:

R ewriteEngine On

R ewriteCond %{HTTPS} on

R ewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

Если нужно сделать обратный редирект 301 с http на https, то прописываем такой вариант:

R ewriteEngine OnR ewriteCond %{HTTPS} =on

R ewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Универсальный редирект с index.php и .html на ссылку без них

Создание дублей страниц с добавкой в конце пути index.php или расширения html у веб-страницы происходит сплошь и рядом. Явно это становится видно, когда адрес вашей главной страницы уже выглядит так http://ваш_сайт/index.php или http://ваш_сайт.html. Не очень красиво, правда? Короче — хуже только крокозябры:) Предлагаю исправить ситуацию универсальным кодом:

R ewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(php|html) HTTP/

R ewriteRule ^(.*)index.(php|html)$ $1 [R=301,L]

А добавки к адресу, которые берутся вроде бы ниоткуда, когда на сайте все нормально настроено: http://ваш_сайт/страница_перехода.html&post=абракадабра? Эти малопривлекательные крякозябры цепляются к хвосту благодаря социальным сетям, где лояльный читатель поделился вашим постом. К адресам сайтов добавляются статистика для отслеживания источников (и тут, екалемене, анонимности никакой).

Избавляемся от абракадабры прописыванием 301 редиректа в htaccess:

R ewriteCond %{REQUEST_URI} ^(.*)&post=R ewriteRule ^(.*)&post=(.*)$ $1 [R=301,L]

Аналогично проделываем процедуру с другими видами хвостиков, например, когда после адреса страницы вылазит &bau=fdf=fdwnf,Jf;pg’;bui=ds643dfvv5, видоизменяем код так:

R ewriteCond %{REQUEST_URI} ^(.*)&bau=

R ewriteRule ^(.*)&sa=(.*)$ $1 [R=301,L]

Структура остается прежней, меняем только первую повторяющуюся часть ссылки. А таких «липучек» может быть много, но делать это надо, потому что такие ссылки индексируются поисковыми системами.

Еще одним примером могу привести, когда нужно убрать после фразы index.php другие параметры, сопутствующие в пути из-за скриптов. Если ссылка выглядит как http://ваш_сайт/index.php?list=1, можем очистить хвосты скриптов следующим кодом в htaccess:

R ewriteCond %{QUERY_STRING} ^list=1$

R ewriteRule ^(.*).php?(.*)$ $1.php [R=301,NC,L]

Избавится от дублей с index.php (редиректс index.php на категорию), чтобы после ЧПУ не было больше приставок, поможет следующий код:

R ewriteRule ^(.*)index.php$ $1 [R=301,L]

Теперь вид сайта в адресной строке будет выглядеть как http://ваш_сайт.ru, а не http://ваш_сайт.ru/index.php. Правда, так лучше?

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

Когда нужно сделать 301 редирект с одной страницы на другую можно воспользоваться следующим кодом в нескольких вариациях синтаксиса. Только каждое перенаправлению на новую страницу создается отдельной строкой. Вот как выглядят правила:

Redirect 301 /адрес_страницы_1.html http://ваш_домен.ru/адрес_страницы_2.html

или

Redirect permanent /адрес_страницы_1.html http://ваш_домен.ru/адрес_страницы_2.html

или

RedirectPermanent /адрес_страницы_1.html http://ваш_домен.ru/адрес_страницы_2.html

Обратите внимание, что адрес домена, на который перенаправляется первая страница, может быть совершенно другим. То есть это может быть реальная переадресация со страницы одного сайта на страницу другого.

Redirect в PHP

301 Редирект в PHP используется, когда с созданием в htaccess возникают трудности, а функция в ПХП будет более логичной. Синтаксис permanent redirect в php выглядит так:

header(«HTTP/1.1 301 Moved Permanently»);header(«Location: http://ваш_домен.ru»);die(«Redirect»);

Данный синтаксис сообщает браузеру пользователя с какой страницы и на какой сайт надо сделать перманентный редирект. Стоит учесть что http://ваш_домен.ru — необязательно главная страница одного и того же ресурса, это может быть как отдельная страница, категория, так и совершенно левый домен. Если при написании функции redirect была допущена ошибка, браузер сообщит об этом в окне надпись «Redirect». Примеры функций Permanent Redirect далее.

указатели в разные стороны

Как убрать дубль адреса сайта в адресной строке с помощью ПХП

if (strpos($_SERVER[‘REQUEST_URI’], ‘http://ваш_сайт.ru’) !== false)

{

$real_page_url = «http://ваш_сайт.ru».str_replace ( «/http://ваш_сайт.ru», «», $_SERVER[‘REQUEST_URI’] ); 

header(«HTTP/1.1 301 Moved Permanently»);

header(«Location: $real_page_url»);

die(«Redirect»);

}

Вот такой функцией убирается дублирование адреса вида: http://ваш_сайт.ru/ http://ваш_сайт.ru/страница. Обратите внимание на написание URL в условии — здесь оно пишется как URI. Получается что при выполнении условия нахождения в адресной строке двойной ссылки, браузер должен перенаправить пользователя 301 редиректом на корректную страницу с помощью переменнной $real_page_url, а кривую ссылку считать ложной.

Как убрать дубль страницы со слешем с помощью PHP

if ( ( $_SERVER[‘REQUEST_URI’], — 1, 1 ) == ‘/’ )

{

$requested_url = rtrim($requested_url, ‘/’);

header(«HTTP/1.0 301 Moved Permanently»);

header(«Location: $requested_url»);

die(«Redirect»);

}

Эта простая функция проверяет наличие в адресной строке конечного слеша. И если слеш обнаружен, то он обрезается с помощью перенаправления на ссылку без конечного слеша.

Особенности настройки Permanent Redirect на nginx.

Permanent Redirect на nginx используют не так часто, как на Apache — на это есть множество причин, и основная из них — это сложности настройки этого конфигурационного серверного файла. Да и не все хостинги дают возможность вебмастеру таким способом решать возникшие трудности. Одним из вероятных проблем, которые можно решить 301 редиректом на nginx — это закрытие индексирования через IP и тестовые сервера.

Чтобы настроить permanent redirect на nginx с ip на http://ваш_домен.ru — находим файл nginx.conf, чаще всего размещенный по пути /etc/nginx/nginx.conf. В нем прописываем строки:

server {listen 0.0.00.000:80 default;server_name _;R ewrite ^/(.*)$ http://ваш_домен.ru/$1 permanent;}

Нолями обозначили IP, через который был доступен сайт и порт 80. Таким способом перенаправляем любой запрос по IP на нормальную ссылку. Можно обойтись и без 301 редиректа, а указать закрытие доступа, строкой return 444, вместо R ewrite ^/(.*)$ http://ваш_домен.ru/$1 permanent, и выполнить ‘invoke-rc.d nginx reload’.

Одним из вариантов не ковыряться в nginx является корректная настройка HTTP-сервера, на котором закрывается соединение через IP. Если страницы через доступ по IP попалив индекс, то после таких манипуляций, со временем они исчезнут оттуда. Но как всегда Яндекс может самостоятельно этого не сделать — и тогда опять пишем в поддержку.

301 редирект на nginx с www на без www

server

{

listen 80;

server_name www.имя_сайта.ru;

R ewrite ^ http://имя_сайта.ru$request_uri? permanent;

}

Permanent Redirect 301 на nginx с домена без www на домен с www

server

{

listen 80;

server_name имя_сайта.ru;

R ewrite ^ http://www.имя_сайта.ru$request_uri? permanent;

}

Redirect 301 в nginx.conf со страницы с index.php на адрес без index.php

location = /index.php {

if ($request_uri = /index.php) {

R ewrite ^ http://$host? permanent;#301 redirect

}

fastcgi_pass  unix:/tmp/fastcgi.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include    fastcgi_params;

}

Как сделать Редирект с http на https без htaccess — ковыряем web.config

Если вы хотите сделать 301 редирект с http на https без htaccess и вам не подходят настройки nginx, возможно, у вас хостинг под управлением Windows? Тогда добавляем вот такие строчки в файл web.config на сервере:

<?xml version=»1.0″ encoding=»UTF-8″?>

<configuration>

  <system.webServer>

    <R ewrite>  

    <rules>      

  <rule name=»Redirect to https» stopProcessing=»true»>   

       <match url=»(.*)» />   

       <conditions>  

          <add input=»{HTTPS}» pattern=»off» ignoreCase=»true» />    

      </conditions>    

      <action type=»Redirect» url=»https://{HTTP_HOST}{REQUEST_URI}» redirectType=»Permanent» />  

      </rule>  

    </rules>

  </R ewrite> 

</system.webServer>

</configuration>

Таким образом, будет настроено полное перенаправление домена с http на https, вместе с поддоменами. Но если поддомены трогать запрещено, тогда используем код ниже, вставляя его в тот же web.config:

<?xml version=»1.0″ encoding=»UTF-8″?>

<configuration> 

<system.webServer> 

   <R ewrite>    

  <rules>   

     <rule name=»Redirect to https» stopProcessing=»true»> 

         <match url=»(.*)» />  

        <conditions>     

       <add input=»{HTTPS}» pattern=»off» ignoreCase=»true» /> 

           <add input=»{HTTP_HOST}» pattern=»^domain.ru» />     

     </conditions>     

     <action type=»Redirect» url=»https://{HTTP_HOST}{REQUEST_URI}» redirectType=»Permanent» />   

     </rule>  

    </rules>

    </R ewrite> 

</system.webServer>

</configuration>

Когда редирект с https на http не работает — что делать?

Не всегда прописывание одного кода на разных сайтах срабатывает с полным успехом. Бывает, возникают ошибки по вине сервера, из-за бардака в конфигурационных файлах или элементарно сделана ошибка в командных строчках.

Когда 301 редирект с https на http не работает — пользуемся другими вариациями кода. В htaccess меняем предыдущий распространенный код на вот такой:

# Redirect HTTPS to HTTP

R ewriteCond %{HTTP:X-Forwarded-Proto} =https

R ewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Если не работает redirect 301 с http:// на https://, в .htaccess прописываем следующее:

R ewriteEngine On

R ewriteCond %{SERVER_PORT} !^443$

R ewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

В случае возникновения циклической реакции — корректируем под такой шаблон:

R ewriteEngine On

R ewriteCond %{HTTPS} off

R ewriteCond %{HTTP:X-Forwarded-Proto} !https

R ewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

301 moved permanently что это и как исправить

Что это за глава? Подумаете вы после прочтения всего того, что было описано выше. А я, в двух словах, поясню. Moved permanently в переводе означает «переехал навсегда». Некоторые вебмастера еще и краем уха не слышали о 301 Moved permanently, тем более о Permanent Redirect, то есть о постоянном редиректе, и ищут ответ, почему у них выбивает такую ошибку на странице. А теперь обращение к тем, кто искал, как исправить 301 moved permanently — начинайте читать статью сначала и находите свой конкретный случай для решения своих задач. А мы переходим к следующему этапу: коротко о том, что такое 302 редирект и зачем он нужен, если есть 301-й.

302 Редирект — временное переселение

Что такое 302 редирект и чем он отличается от 301? Исходя из названия, 302 Temporary redirect (временное перенаправлению) осмелюсь сказать, что этим редиректом мы можем временно перенаправлять робота и посетителей с одной страницы на другую. Сколько может длиться период временного перенаправления — это никем не указано, то есть догажываемся, что до момента, пока это перенаправление будет актуальным. Здесь хочеться уточнить, что после злоупотребления сеошниками временными перенаправлениями и введения санкций от поисковых систем к недобросовестным сайтам, крайне не рекомендуется делать 302 Redirect с одного домена на другой. То есть мы можем решать временные задачи только в пределах одного сайта.

Дорожные знаки олицетворяющие отличия

Чем отличается 302 Редирект от 301?

Какая особенность 302 Редиректа? Сравнивая его с 301 можно сказать, что постоянное перенаправление полностью передает весь вес сайта, включая ТИЦ, PR и фильтры, а также дает роботам понять, что страница, с которой идет 301 Редирект больше не нуждается в индексации. То есть из поиска она выпадает и заменяется второй. 302 Редирект ничего подобного не передает странице, на которую делается перенаправление, разве что вторая страница быстрее индексируется. А это означает для робота, что обе страницы доступны и должны присутствовать в поиске.

Для каких нужд используют 302 Redirect? Чаще всего для перенаправления на обновленные данные, пока на «редирекнутой» странице не будет обновлена информация или для придания акцента и большего внимания новой странице. Например, вместо страницы категории для выбора можно переадресовать посетителя сначала на акцию, а по его желанию он может по заметной ссылке перейти снова на страницу категории. Команды для создания 302 Temporary redirect не привожу, так это будет уже совсем иная статья. Пользуемся с умом.

Сервисы для контроля Редиректов

Конечно же, как же без сервисов для отслеживания редиректов на сайтах. За всем нужен глаз да глаз. Поэтому посоветую парочку вариантов для контроля.

Расширения для браузера, которые контролируют редиректы:

  • HttpFox для Mozilla;
  • HTTP Headers для Google Chrome.

С помощью этих инструментов можно отслеживать перенаправление по адресам, скорость и порядок загрузки страниц. Таким способом можно выявить циклическую цепочку, если она образовалась. На этом закругляю свои длинную статейку, надеюсь, мои советы вам помогут разобраться во всех основных тонкостях перенаправления ссылок.

Инструменты контроля

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.

how to do a 301 redirect

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-м редиректом (переадресацией) вы обязательно столкнетесь при склейке зеркал сайта с префиксом WWW и без него, в случае переезда сайта на новый домен, с HTTP на HTTPS, переноса страницы в другой раздел сайта и изменения ее адреса. Во всех этих случаях важно сохранить позиции и трафик, перенаправляя его на новые страницы. Как это сделать? Читайте нашу инструкцию.

Код состояния HTTP 301 (Moved Permanently или 301 редирект) — это стандартный код ответа сервера, который сообщает, что запрашиваемый ресурс перемещен и получил новый URL.

Для SEO 301 редирект важен, поскольку он позволяет исключить из поисковой выдачи старый URL и заменить его новым без потери страницей веса и, соответственно, ухудшения ее позиций.

Настроить 301-й редирект можно разными способами:

  • с помощью HTML и PHP;
  • средствами специальных плагинов для CMS,
  • при помощи скриптов;
  • с помощью файлов .htaccess для сервера Apache или web.config — для IIS.

Последний вариант — самый надежный и простой, поэтому о нем и расскажем подробнее.

Настройка 301 редиректа в .htaccess

Редирект с одного домена на другой

Постраничные редиректы

Склейка зеркал сайта

Борьба с дублями на сайте

Настройка 301 редиректа в web.config

Альтернативные способы настройки переадресации

Как настроить редирект, если нет опыта веб-программирования

Популярные плагины для WordPress

Настройка 301 редиректа в .htaccess

.htaccess — это файл дополнительной конфигурации веб-сервера Apache, с помощью которого можно задавать настройки на уровне отдельных каталогов. В отличие от главного файла конфигурации httpd.conf, директивы в .htaccess распространяются только на тот каталог, где он размещен, и на дочерние каталоги.

Если в корневой папке вашего сайта нет файла .htaccess, его нужно создать и загрузить с помощью FTP-клиента. Теперь можно приступать к настройке редиректов.

Редирект с одного домена на другой

Когда вам требуется сделать редирект с текущего домена на другой (например, при переезде сайта), можно использовать директивы модуля mod_alias. Пропишите в .htaccess следующую директиву (вместо newsite.ru укажите ваш новый домен):

Redirect permanent / https://newsite.ru/

или

Redirect 301 / https://newsite.ru/

301 редирект — не единственный возможный. Есть 302, 307 и другие редиректы. О том, в каких ситуациях их использовать и в чем их польза для SEO, рассказано в этой статье.

Постраничные редиректы

Приведем еще примеры настройки переадресации 301.

  • Редирект со страницы page1.html на страницу page2.html:
Redirect 301 /page1.html https://site.ru/page2.html
  • Редирект с главной страницы сайта на страницу каталога /cat:
Redirect 301 / https://site.ru/cat
  • Редирект с каталога /cat на главную:
Redirect 301 /cat https://site.ru

Склейка зеркал сайта

Редирект часто используют для склеивания зеркал сайта — так называются варианты сайта с одинаковым контентом, доступные по разным адресам. Например, site.com и www.site.com. Поисковики не любят зеркала и считают их дублями, поэтому рекомендуется выбрать один основной адрес (главное зеркало), а с остальных настроить переадресацию на него.
Для склейки зеркал применяется модуль mod_rewrite.

Например, если вы хотите, чтобы шел редирект с домена с www на домен без www, то пропишите такие строки (где yoursite.ru — ваш домен):

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

И наоборот — редирект с домена без www на домен с www:

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

Редирект всех страниц сайта при переезде с http на https:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Если не сработает, можно попробовать такой вариант:

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Борьба с дублями на сайте

Также 301 редирект используется в борьбе с дублями страниц. Приведем несколько примеров.

Для поисковых систем URL https://www.yoursite.ru/ и https://www.yoursite.ru являются разными. Поэтому надо решить, какой тип использовать: со слешем в конце или без него.

Для того чтобы убрать слеш в конце URL, пропишите в файле .htaccess правило:

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

Добавить слеш можно таким образом:

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

Для того чтобы заменить все .htm файлы .html файлами, пропишите следующие строки:

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

Если вы прописываете несколько директив, то строка «RewriteEngine on» указывается один раз — с ее помощью включается модуль mod_rewrite.

Если вы создаете файл .htaccess с нуля, то все команды указываются внутри таких строк:

<IfModule mod_rewrite.c>
…
</IfModule>

Например, так будет выглядеть файл .htaccess с двумя редиректами: с www на без www и со страниц без слеша на страницы со слешем в конце:

Как настроить 301-й редирект

Это лишь несколько примеров дублирования страниц. Вот подробная инструкция по поиску и устранению дублей на сайте — в том числе с помощью 301 редиректа.

Настройка 301 редиректа в web.config

Вариант редиректа с помощью .htaccess работает только для Apache. Для веб-сервера IIS настраивать переадресацию нужно в файле web.config. Это XML-файл, в котором хранятся основные настройки сервера IIS. Его роль аналогична роли файла .htaccess для сервера Apache.

Чтобы настроить 301-й редирект с одной страницы (yoursite.ru/page.html) на другую (yoursite.ru/page2.html), нужно прописать в файле web.config следующий фрагмент кода:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="test.html">
<system.webServer>
<httpRedirect enabled="true" destination="http://yoursite.ru/page2.html" httpResponseStatus="Permanent" />
</system.webServer>
</location>
</configuration>

301-й редирект с домена с www на домен без www настроить можно таким образом:

<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www.(.+)$" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Альтернативные способы настройки переадресации

Если по какой-то причине вы не можете создавать и редактировать web.config или .htaccess (например, в силу ограничений на хостинге) или вам нужна определенная обработка полученных данных, их модификация или проверка, по результатам которой реализуется перенаправление, вы можете настроить редирект с помощью PHP.

Синтаксис следующий:

<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://newsite.ru/');
?>

В этом случае происходит принудительная передача кода HTTP-ответа 301, и пользователь перенаправляется на страницу https://newsite.ru/.

Если у вас небольшой сайт с парой страниц, то редирект можно сделать с помощью HTML:

<meta http-equiv="refresh" content="0; url=https://newsite.ru">

Изменяя цифру 0, вы задаете количество секунд до переадресации. В этом случае редирект реализуется не на стороне сервера, а на стороне клиента (не передается заголовок 301).

Также редирект можно сделать с помощью JavaScript:

<script type="text/javascript">
window.location.replace("newsite.ru");
</script>

В этом случае также не передается заголовок 301. И если у пользователя в браузере отключена поддержка JavaScript, то редирект не сработает.

Вариантов редиректов бесчисленное множество. Упростить работу можно с помощью генераторов редиректов. Это онлайн-сервисы, которые выдают готовые коды, — вам нужно лишь указать, откуда и куда перенаправить пользователя. Вот некоторые из этих сервисов: www.webconfs.com, www.rapidtables.com, www.htaccessredirect.net.

Как настроить редирект, если нет опыта веб-программирования

Настройка редиректа — сложная техническая задача, для выполнения которой не обойтись без профильных знаний. Если вы не владеете навыками разработки и программирования, и у вас под рукой нет штатного программиста, можно воспользоваться поддержкой хостинг-провайдеров. Многие из них предлагают услугу web-форвардинга (или «переадресация домена», «URL-форвардинг» и т. п.). Она позволяет настроить переадресацию с одного URL на другой. При этом используется 301 редирект.

Еще один вариант — настройка редиректов с помощью встроенных инструментов CMS или конструкторов сайтов (такие есть, например, в Joomla!, Wix и Тильде) или специальных плагинов.

Популярные плагины для WordPress

Настроить редиректы для сайта на WordPress можно с помощью таких плагинов:

  • Redirection — самый популярный плагин для настройки редиректов. Кроме основной функции обладает следующими возможностями: сбор статистики переадресаций, отслеживание ошибок 404, поддержка регулярных выражений.
  • Safe Redirect Manager — простой плагин, который также поддерживает регулярные выражения и не несет серьезной угрозы для производительности сайта.
  • Quick Page/Post Redirect Plugin — еще один простой в использовании плагин. Один из недостатков — отсутствие поддержки регулярных выражений. К ссылкам можно добавлять атрибут “nofollow”.

Не уверены, что сможете правильно настроить редиректы своими руками? Лучше не рисковать — в модуле SEO системы PromoPult за вас все сделают профессиональные вебмастера. Все работы выполняются по чек-листу и в срок. Есть возможность рассрочки платежа.

Подводим итоги

Лучший способ настроить 301 редирект — с помощью .htaccess. Но он подходит только для веб-серверов Apache. Для IIS придется настраивать web.config. Если же нужно не просто сделать редирект, а учесть определенные условия, то используйте PHP, но в этом случае без помощи программиста не обойтись.

Есть и другие способы (в частности, с помощью HTML и JavaScript), но это не 301 редирект, а просто перенаправление без передачи веса, что бесполезно с точки зрения SEO.

Также можно использовать плагины для популярных CMS или подключить услугу web-форвардинга, если ее оказывает ваш хостинг-провайдер.

Стоит понимать, что не всегда есть смысл использовать 301-й редирект. В некоторых случаях лучше подойдет, например, атрибут rel=»canonical».

Какой бы вариант вы ни выбрали, главное, чтобы он правильно работал. Проверить корректность редиректов на вашем сайте и поставить задачи на внедрение переадресации можно в рамках модуля «Поисковое продвижение» системы PromoPult.

← Назад

Настройка 301 редиректа в файле .htaccess, что такое 301 Permanent Redirect и код состояния HTTP 301, и другое.

Команда NewPoint продолжает просвещать своих дорогих клиентов и подписчиков, и сегодня мы хотели бы поднять важную и сложную тему редиректа. Мы могли бы дать Вам готовый код, но толка от этого было бы мало. Лучше мы разложим все по полочкам, раскроем все нюансы, чтобы Вы потом смогли ориентироваться в техническом смысле предложенного кода и выбирать подходящий вариант, исходя из условий. 

Итак, если Вам надоело оставаться в неведении, приготовьтесь узнавать много нового. 

Что такое 301 Permanent Redirect и код состояния HTTP 301?

Редирект — это перенаправление с одной страницы на другую. Переходя по ссылке на страницу с редиректом, пользователь может даже не узнать, что его отправили на другую площадку. Делается это для того, чтобы актуализировать ссылку: подменить ресурс более актуальным. Например, заменить http-страницу на ее https-версию. 

Редирект может происходить как на стороне сервера, так и через браузер. С сервером работают крайне редко, так как данный метод может замедлять загрузку страниц. А вот браузерный редирект считается более предпочтительным вариантом. 

Permanent Redirect 301 или код состояния 301 — одна из популярных разновидностей редиректа. Она позволяет настроить сервер так, чтобы в ответ на запрос браузера он выдавал сообщение о том, что сайт «переехал», причём на постоянной основе. Браузер понимает, что страница больше не доступна по текущему адресу и совершает переход по новому. При этом старый URL становится недействительным, а его вес перемещается на новый адрес. 

Разница между 301 и 302 редиректом

Класс редиректов 3хх достаточно широкий, но наиболее известны из них 301 и 302. Их очень легко спутать, однако для поисковых роботов эти коды имеют принципиальную разницу. 

301 Moved Permanently — постоянный редирект. Эта комбинация сигнализирует роботу о том, что старый ресурс окончательно перемещен на новую площадку, а значит старый домен можно удалить из базы. Используется данный редирект для «переезда» на новый домен, для подключения новой CMS и для склейки идентичных страниц.

302 Temporary Redirect — временный редирект. Он говорит о временном перемещении сайта или отдельных его страниц. Как правило, используется, когда на основной площадке проводятся технические работы. 

Последствия для поисковой выдачи также неоднозначные:

  • При 301 редиректе в поисковой выдаче отображается новый URL, старый игнорируется.
    Однако на эту смену требуется время, Google рекомендует сохранять статус страницы в течение года, чтобы не «сбить» выдачу.
  • При 302 редиректе поисковая система хранит старый URL в течение полугода, в это время выдавая новую ссылку. По прошествии полугода редирект получает статус постоянного. 

Поисковые системы с подозрением относятся к 302 коду, так как нередко вебмастера упускают сроки, а затем пытаются вернуть настройки. Да и злоупотребление данным редиректом при черном SEO добавило негативного отношения. Поэтому, если Вам дорога репутация ресурса и его положение в выдаче, лучше не рисковать и пользоваться 301 редиректом в .htaccess.

Правила настройки Redirect, RewriteRule и RewriteCond

Существует несколько директив, с помощью которых совершается перенаправление пользователя. 

Директива Redirect в htaccess

Синтаксис:  

Redirect [status] /oldpage http://newpage

Стандартное перенаправление, которое используется чаще всего. В скобках вместо status необходимо указать код редиректа: 301 или 302. Страница «oldpage» должна быть прописана
в формате без указания полного адреса сайта, но с указанием полного относительного адреса URL начиная со слэша «/», то есть нужно указать именно корень сайта. 

Адрес «newpage» прописывается полностью, то есть с названием домена и протокола http
или https. 

Пример:

Redirect 301 /oldpage.php https://htaccess.ru/newpage.php

Пример:

Redirect 301 /oldpage.php https://htaccess.ru/newpage.php

Директива RewriteRule

Синтаксис:

RewriteRule Шаблон Подстановка [коды]

Директива RewriteRule диктует правила перехода на новую платформу. Если проводится внешний редирект, URL меняется в строке браузера — «[R=301,L]». При внутреннем редиректе URL не меняется — «[R=301]» или «[L]».

Директива RewriteCond

Синтаксис:

RewriteCond Сравниваемая_Строка Условие

Директива RewriteCond задает условия, при которых будут выполняться правила RewriteRule. Такими условиями могут стать браузер, IP-адрес, заголовок и т.д. 

Для чего используется перенаправление?

Редирект активно используется вебмастерами, так как полезен в различных обстоятельствах:

  • При переезде сайта на новый домен. Чтобы не потерять трафик, направляющийся на старую страницу, создается перенаправление.
  • Установка SSL-сертификата. Позволяет перенаправить пользователь со страниц с http на адрес с префиксом.
  • Смена URL страницы. Это событие может быть связано со сменой CMS или с SEO-оптимизацией.
  • Перенос разделов на субдомены. 
  • Для концентрации трафика с разных доменных зон в одной. Вебмастер покупает домены example.com, example.ru, example.net, example.org и example.biz и на четырех последних сайтах настраивает редирект на example.com.
  • Для показа мобильным пользователям специальной версии. 

Способы настроить редирект 301

В зависимости от площадок, с которой перенаправляется, и на которую направляется поток трафика, используется различный синтаксис редиректа. 

С одной страницы на другую

Данный редирект раз и навсегда изменит URL страницы и позволит избавиться от дублей
и устаревших материалов. 

Синтаксис:

Redirect 301 /oldpage/ http://site.ru/newpage/

Более подробный синтаксис того же редиректа:

RewriteCond %{REQUEST_URI} ^/oldpage/$ 
RewriteRule ^.*$ 
http://site.ru/newpage/? [R=30

После сохранения такого кода будет осуществляться постоянная переадресация со старой страницы на новую, раздел старой страницы будет удален из поиска, а новой странице передастся весь ее вес.

Склейка зеркал сайта (www / без www)

Подобная работа проводится в том случае, когда под один сайт приобретается сразу несколько доменов, различающихся лишь наличием или отсутствием тройного W.

301 редирект с ресурса с www на платформу без www, при котором главным зеркалом считается домен без www, осуществляется при помощи следующей комбинации:

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

Обратный редирект, при котором главным зеркалом считается домен с www, можно реализовать через код:

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

Таким образом обе страницы связываются, и трафик не разделяется.  

С http на https

Чтобы в поиск не попадали дубли, а пользователи не заходили на страницы с разными протоколами, прописывается данный редирект. Его итогом будет добавление ко всем URL протокола 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, но SEO-данные при этом останутся неизменными. 

Постранично

Если Вам необходимо перенести весь сайт, кроме одной страницы, используйте постраничный редирект. Он прописывается следующим образом:

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/page.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

После этого все страницы, кроме указанной, будут перенаправлены. 

Для одной страницы

Если же, наоборот, необходимо перенаправить единственную страницу, добавьте 4 строчки кода: 

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/page.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

С https на http

Чтобы провернуть обратный редирект и лишить всех страниц SSL-сертификата, используйте следующую комбинацию синтаксиса:

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

Это должно связать страницы доменов и дать им протокол http.

С 404 Not Found

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

Синтаксис:

ErrorDocument 404 http://www.site.com/301.html 

В итоге все обращения к 404 страницам будут завершаться на главной странице сайта. 

Итогом данного редиректа будет являться перенаправление всех обращений к страницам 404 на главную страницу сайта.

Со страниц со слешем на без слеша

Чтобы привести URL к единому формату и исключить все дубли в поиске, желательно провести редирект для сайтов без слэша. 

Синтаксис:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

В итоге слэш просто удалится. 

Со страниц без слеша на слеш

Можно провернуть и обратную операцию. Для этого пропишите:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Результат — добавленный слэш на страницах без него.

Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы

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

Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы

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

Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы

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

Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы

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

Только адреса site.ru/index.php на основное зеркало site.ru

Чтобы перенести сайт без GET-параметров, пропишите в файле:

RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^z
RewriteRule ^(.*)$ http://site.ru/? [R=301,L]

Всех адресов с index.php и GET параметрами на страницы только с GET параметрами 

Проводится при помощи команды:

RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ http://site.ru/ [R=301,L]

Итог: index.php в url будет вырезан.

Для index.php, index.html или index.htm

Провести массовую склейку на любой CMS, например, Joomla, можно при помощи кода:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(php|html|htm) HTTP/ 
RewriteRule ^(.*)index.(php|html|htm)$ http://site.ru/$1 [R=301,L]

Url с GET параметрами на статический

Есть 2 варианта переноса сайта с динамическим-URL на статический:

1 вариант — простой адрес с GET параметром:

RewriteCond %{QUERY_STRING} ^id=229
RewriteRule ^.*$ /supermodel/? [R=301,L] 

2 вариант — со страницы и GET параметром:

RewriteCond %{REQUEST_URI} /test/
RewriteCond %{QUERY_STRING} ^id=229
RewriteRule ^.*$ /supermodel/? [R=301,L]

Каждая страница одного домена на такой же адрес другого url

Подобная операция совершается при помощи кода:

RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]

Редирект для PHP

PHP— это сервероориентированный язык, поэтому такой вид редиректа будет проводиться
на уровне сервера, а не браузера, что обеспечивает высокую скорость работы. При этом каждой страничке, на которую будет производиться редирект, присваивается свой уникальный REFERER, а это значит, что скрыть страницу-источник не получится.

Чтобы редирект сработал, его чтение должно проводиться в первую очередь — до того, как
на экран будет выведен первый символ. Поэтому ставить пробел перед <? нельзя.

Код редиректа на примере файла index.php:

<?php
header («Location: https://stokrat.org/», TRUE, 302);
?>

или

<?php
header («Location: https://stokrat.org/», TRUE, 301);
?>

Если Вы подключаете 302 редирект, выбираете первый вариант; если 301 — второй.
Дело в том, что через PHP, как правило, настраивают именно временное перенаправление.

Редирект 301 в разных панелях управления хостингом

Мы разберем две наиболее популярные панели — Cpanel и ISPmanager.

Чтобы настроить редирект в Cpanel, перейдите в блок  «Домены» => «Перенаправления». Появится окно настройки, где нужно выбрать:

  • тип — постоянный 301;
  • https://www — выбрать старый домен сайта;
  • перенаправляет на — адрес нового домена;
  • поставить галочку напротив «Перенаправлять только с www».

Сохраните настройки и перенаправление готово. 

Через ISPmanager можно править файлы nginx.config или .htaccess, но вся работа уже сделана
за Вас. К примеру, для настройки редиректа https/http достаточно просто убрать галочку с соответствующего пункта в разделе «WWW-домены».

Особенности редиректа для популярных CMS

CMS-системы облегчают процесс настройки редиректа вплоть до пары кликов.
Опишем особенности взаимодействия с различными платформами. 

WordPress

Чтобы перенаправить страницу, Вам нужно скачать плагины из панели управления. Зайдите
в «Плагины» -> «Добавить новый». Из доступных выберите необходимый и скачайте. 

OpenCart

Чтобы совершить редирект через OpenCart достаточно зайти в «Менеджер 301 редиректов»
и выбрать необходимый вариант перенаправления.

Битрикс

В Битриксе Вам нужно обратиться к модулю «Редирект мастер», но за него придется доплатить.
В оплаченном меню стоит выбрать свой вид редиректа и активировать его.  

Joomla

Найти компонент, отвечающий за редирект в Joomla, можно в меню «Компоненты» — > «Перенаправление». Здесь Вы увидите все имеющиеся редиректы и сможете создать новый, заполнить все поля и сохранить настройки. После этого редирект активируется. 

Настройка кириллических доменов .РФ

Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код на латинице. В частности, сама зона .рф преобразуется в .xn--p1ai.

Далее представлены синтаксисы для доменов в зоне РФ.

301 редирект с одного домена на другой

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

Редирект на папки со слешем на конце

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

Редирект на папку без слеша — убираем слеш на конце

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

Переадресация с домена в папку другого сайта

RewriteCond %{HTTP_HOST} ^si-te.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/si-te/ [R=301,L]

Редирект со всех страниц кроме определенной папки

Кроме папки администратора bitrix #

RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301]
RewriteRule ^(.*)$ http://www.newsite.ru/new/ [L,R=301]

Переадресация всех файлов папки на конкретный файл

RewriteRule ^dir(.*)$ /new-file.php [L,R=301]

Переадресация файлов папки на другой файл с исключением

RewriteRule ^dir/no-file.html /no-file-new.html [L,R=301]
RewriteRule ^dir(.*)$ /all.php [L,R=301]

Редирект замены расширений файлов – с html на php

RedirectMatch 301 (.*).html$ http://www.new-site.ru$1.php

Редирект с index.php на корень сайта

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

Редирект всех индексных страниц на корень

RewriteRule ^(.*)index.php$ http://www.site.ru/$1 [R=301,L]

Переадресация с поддомена на основной домен

RewriteCond %{HTTP_HOST} ^test.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI} [R=301,NC,L,QSA]

Редирект страницы из различных директорий

RewriteRule [^abc]/unique-file.html /unique-file.html [R=301,L]

Создаем ЧПУ-копию динамических страниц

RewriteRule ^testovyi/test/?$ /studio/news/detail.php?ID=230354&PAGEN_2=11 [NC,L]

Код позволяет создать копию страницы с относительным адресом
/studio/news/detail.php?ID=230354&PAGEN_2=11 по адресу /testovyi/test/

Переадресация с https на http

RewriteCond %{HTTPS} "on"
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

Настройка ответа 403 для спама по REFERER

RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR]
RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC]
RewriteRule .* - [F]

Обработка ошибки 404 в .htaccess

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.site.ru/dir/");
exit();
?>

Как узнать, что переадресация работает правильно

Узнать, корректен ли код 301 редиректа можно при помощи браузера. Введите в адресную строку URL страницы, с которой совершается переадресация. В идеале Вы должны увидеть ту страницу и тот URL, на которую был настроен редирект.

После того, как Вы настроили 301 редирект, его необходимо проверить на корректность работы. Для этого введите в адресной строке своего браузера URL страницы, с которой была сделана переадресация. Если Вы видите новую страницу, то есть, ту, на которую сделали редирект
— то все корректно работает.

Также можно заглянуть в Яндекс.Вебмастер, открыть раздел «Инструменты» — > «Проверка ответа сервера». В поле «Опрашиваемый URL» введите адрес старой страницы. Вы должны получить код статуса http — «301 Moved Permanently».

Что делать, если 301 редирект не работает?

Если проверка прошла неудачно и редирект не реализован проверьте ряд параметров:

Синтаксические ошибки

Любой лишний пробел, перенос строки или точка способны помешать работе команды. Копируйте код аккуратно, не добавляя комментариев, номеров строк и т.д.

Использование URL адреса с параметром

«Упрощенный» вариант редиректа в файле .htaccess вида: Redirect 301 “oldpage” “newpage”
— который может уместиться в одну строку, работает исключительно с URL без параметров. 

Команда типа Redirect 301 /index.php?productID=1109 http://dh-agency.ru/for-seo/ работать не будет. Замените ее на Redirect 301 /index.php http://dh-agency.ru/category/for-seo-professionals/.

Некорректное расположение

PHP-код, отдающий заголовок, должен находиться над всеми последующими командами
и выводами. 

Отключен модуль mod_rewrite

Модуль mod_rewrite должен быть подключен и активирован — без него редирект не заработает.

Заключение

В заключение, хотелось бы еще раз повторить — не стоит злоупотреблять редиректами, так как это может привести к пессимизации сайта. Откажитесь от постоянной переадресации, если:

  • Вы переезжаете лишь на время — лучше используйте 302 или 3074 код;
  • Вы сбегаете от банов, фильтров, штрафов и прочих проблем с доменом — при переезде
    Вы захватите все проблемы с собой.

Если же причины переадресации обоснованы, смело прописывайте 301 код
— благо теперь Вы знаете, как это делается. 

Общая оценка
/ 5. Всего проголосовало

From Wikipedia, the free encyclopedia

HTTP 301 is the HTTP response status code for 301 Moved Permanently. It is used for permanent redirecting, meaning that links or records returning this response should be updated. The new URL should be provided in the Location field, included with the response. The 301 redirect is considered a best practice for upgrading users from HTTP to HTTPS.

RFC 2616[1] states that:

  • If a client has link-editing capabilities, it should update all references to the Request URL.
  • The response is cacheable unless indicated otherwise.
  • Unless the request method was HEAD, the entity should contain a small hypertext note with a hyperlink to the new URL(s).
  • If the 301 status code is received in response to a request of any type other than GET or HEAD, the client must ask the user before redirecting.

Examples[edit]

Client request:

GET /index.php HTTP/1.1
Host: www.example.org

Server response:

HTTP/1.1 301 Moved Permanently
Location: https://www.example.org/index.asp

Using an .htaccess file[edit]

To fix problems with non-existing files or directories using a distributed .htaccess file:

Redirect 301 /calendar.html /calendar/
Redirect 301 /not_found.html /

Here is an example using a .htaccess file to redirect a non-secure URL to a secure address without the leading «www»:

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

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

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]

100% Completed

Static HTML[edit]

A custom directory redirect, using an index.html file:

<meta http-equiv="refresh" content="0; url=/" />
<p><a href="/">Home</a></p>

Using programming languages[edit]

Here is an example using Perl CGI.pm:

print redirect("https://example.com/newpage.html");

Here is an example using a PHP redirect:

<?php
header("Location: https://example.com/newpage.html", true, 301);
exit;

Here is one way to redirect using Express.js:

app.all("/old/url", (req, res) => {
    res.redirect(301, "/new/url");
});

Caching server[edit]

Equivalently simple for an nginx configuration:

location /old/urlblocked/ {
    return 301 /new/url/stay standard structure 
}

On

Search engines[edit]

Both Bing and Google recommend using a 301 redirect to change the URL of a page as it is shown in search engine results, providing that URL will permanently change and is not due to be changed again any time soon.[2][3]

See also[edit]

  • Hypertext Transfer Protocol
  • List of HTTP status codes
  • URL redirection

References[edit]

  1. ^ Fielding; et al. (June 1999). 10.3.2 301 Moved Permanently. IETF. p. 61. sec. 10.3.2. doi:10.17487/RFC2616. RFC 2616.
  2. ^ «Site Move Tool». Bing Webmaster Help & How-to.
  3. ^ «301 redirects». Google Webmaster Tools Help.

HTTP response status code 301 Moved Permanently is returned by the server to indicate that the resource has been given a new permanent location.

The HTTP response is cacheable by default. If the default behavior needs to be overridden then the HTTP response must include the appropriate HTTP caching headers.

Usage

When the 301 Moved Permanently status code is received, clients are expected to update their stored links to the new URI. The new URI is specified by the Location HTTP header and can be used by the client for automatic redirection.

This message might be sent by servers that have migrated to a new domain, or have reorganized their internal file structure, and do not plan on reverting to the former URI.

Note

301 Moved Permanently status code allows for the client to change the HTTP request. For example, if the original HTTP request is a HTTP POST request then the follow-up may be a HTTP GET request. This differs from the 308 Permanent Redirect status code, which requires that an identical request be sent in HTTP response.

Example

In the example, the client attempts to retrieve an HTML resource. The server responds to say that the resource has permanently moved to a new URI and includes it in the Location HTTP header. Client-side, a message is presented in the message body to suggest updating the relevant bookmarks, however this is seldom visible in modern browsers which straight away redirect to the new location.

Request

GET /news.html HTTP/1.1
Host: www.example.ai

Response

HTTP/1.1 301 Moved Permanently
Location: http//www.example.ai/feeds/news.html
Content-Type: text/html; charset=UTF-8
Content-Length: 150

<h1>The Newsfeed has moved</h1>
<body>
The newsfeed has moved permanently to <a href=/feeds/news.html>here</a>. Please update your bookmarks.
</body>

Code references

.NET

HttpStatusCode.MovedPermanently

Rust

http::StatusCode::MOVED_PERMANENTLY

Rails

:moved_permanently

Go

http.StatusMovedPermanently

Symfony

Response::HTTP_MOVED_PERMANENTLY

Python3.5+

http.HTTPStatus.MOVED_PERMANENTLY

Java

java.net.HttpURLConnection.HTTP_MOVED_PERM

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_MOVED_PERMANENTLY

Angular

@angular/common/http/HttpStatusCode.MovedPermanently

Takeaway

The 301 Moved Permanently status code indicates that the resource has moved to a new location that is specified within the HTTP response. Clients are expected to update their internal data accordingly.

See also

  • 308 Permanent Redirect
  • RFC 7231

Last updated: June 29, 2022

Nov 23, 2017 10:00:15 AM |
301 Moved Permanently: What It Is and How to Fix It

A close look at what a 301 Moved Permanently response code is, including troubleshooting tips to help you resolve this error in your own application.

A 301 Moved Permanently is an HTTP response status code indicating that the requested resource has been permanently moved to a new URL provided by the Location response header. The 3xx category of response codes are used to indicate redirection messages to the client, such that the client will become aware that a redirection to a different resource or URL should take place.

It can be a challenge to differentiate between all the possible HTTP response codes and determine the exact cause of a message like the 301 Moved Permanently code. There are dozens of possible HTTP status codes used to represent the complex relationship between the client, a web application, a web server, and often multiple third-party web services, so determining the cause of a particular status code can be difficult. In this article we’ll examine the 301 Moved Permanently code by looking at a few troubleshooting tips, along with some potential fixes for common problems that might be causing this issue, so let’s get started!

The Problem is Server-Side

All HTTP response status codes that are in the 3xx category are considered redirection messages. Such codes indicate to the user agent (i.e. your web browser) that an additional action is required in order to complete the request and access the desired resource. Unlike gateway related 5xx response codes, like the 502 Bad Gateway Error we’ve looked at recently, which may indicate issues either on an upstream server or the client, the 301 Moved Permanently code generally indicates an issue on the actual web server hosting your application.

That said, the appearance of a 301 Moved Permanently is usually not something that requires much user intervention. Most browsers should automatically detect the 301 Moved Permanently response code and process the redirection action automatically. The web server hosting the application should typically include a special Location header as part of the response it sends to the client. This Location header indicates the new URL where the requested resource can be found. For example, if a request comes in to access the URL https://airbrake.io, but the web server is configured to forces redirection to a secure version using https, the server response will include the Location: https://airbrake.io header. This tells the browser that it should redirect this request (as well as all future ones) to https://airbrake.io to the secured URL of https://airbrake.io. In most cases, the browser will automatically detect this 301 Moved Permanently response code, read the new Location URL, and redirect the request to that new location. It is considered best practice to use a 301 Moved Permanently redirection to transition a user agent from HTTP to the secure HTTPS. Thus, if you attempt to go to the insecure URL of https://airbrake.io right now, you’ll automatically be redirected to the HTTPS version of the site (https://airbrake.io).

Since the 301 Moved Permanently indicates that something has gone wrong within the server of your application, we can largely disregard the client side of things. If you’re trying to diagnose an issue with your own application, you can immediately ignore most client-side code and components, such as HTML, cascading style sheets (CSS), client-side JavaScript, and so forth. This doesn’t apply solely to web sites, either. Many smart phone apps that have a modern looking user interface are actually powered by a normal web application behind the scenes; one that is simply hidden from the user. If you’re using such an application and a 301 Moved Permanently occurs, the issue isn’t going to be related to the app installed on your phone or local testing device. Instead, it will be something on the server-side, which is performing most of the logic and processing behind the scenes, outside the purview of the local interface presented to the user.

All of that said, if your application is generating 301 Moved Permanently codes improperly or unexpectedly, there are a number of steps you can take to diagnose the problem.

Start With a Thorough Application Backup

As with anything, it’s better to have played it safe at the start than to screw something up and come to regret it later on down the road. As such, it is critical that you perform a full backup of your application, database, and so forth, before attempting any fixes or changes to the system. Even better, if you have the capability, create a complete copy of the application onto a secondary staging server that isn’t «live,» or isn’t otherwise active and available to the public. This will give you a clean testing ground with which to test all potential fixes to resolve the issue, without threatening the security or sanctity of your live application.

Diagnosing a 301 Moved Permanently Response Code

A 301 Moved Permanently response code indicates that the server believes that the requested resource is invalid and that the request should be redirected to a new, «proper» URL. I use the word believes here because it’s entirely possible that the server is misconfigured or bugged in some way, which is causing it to provide 301 Moved Permanently codes for resources/URLs that are totally valid. Thus, a large part of diagnosing the issue will be going through the process of double-checking what resources/URLs are generating 301 Moved Permanently response codes and determining if these codes are appropriate or not.

That said, if your application is responding with 301 Moved Permanently codes that it should not be issuing, this is an issue that many other visitors may be experiencing as well, dramatically hindering your application’s ability to service users. We’ll go over some troubleshooting tips and tricks to help you try to resolve this issue. If nothing here works, don’t forget that Google is your friend. Don’t be afraid to search for specific terms related to your issue, such as the name of your application’s CMS or web server software, along with 301 Moved Permanently. Chances are you’ll find others who have experienced this issue and have come across a solution.

Troubleshooting on the Server-Side

Here are some additional tips to help you troubleshoot what might be causing the 301 Moved Permanently to appear on the server-side of things:

  • Check the Server Configuration Files — Your application is likely running on a server that is using one of the two most popular web server softwares, Apache or nginx. At the time of publication, both of these web servers make up over 84% of the world’s web server software! Thus, one of the first steps you can take to determine what might be causing these 301 Moved Permanently response codes is to check the configuration files for your web server software for unintentional redirect instructions.

To determine which web server your application is using you’ll want to look for a key file. If your web server is Apache then look for an .htaccess file within the root directory of your website file system. For example, if your application is on a shared host you’ll likely have a username associated with the account on that host. In such a case, the application root directory is likely something like /home/<username>/public_html/, so the .htaccess file would be at /home/<username>/public_html/.htaccess.

If you located the .htaccess file then open it in a text editor and look for lines that use RewriteXXX directives, which are part of the mod_rewrite module in Apache. Covering exactly how these rules work is well beyond the scope of this article, however, the basic concept is that a RewriteCond directive defines a text-based pattern that will be matched against entered URLs. If a matching URL is requested by a visitor to the site, the RewriteRule directive that follows one or more RewriteCond directives is used to perform the actual redirection of the request to the appropriate URL. Therefore, if you find any strange RewriteCond or RewriteRule directives in the .htaccess file that don’t seem to belong, try temporarily commenting them out (using the # character prefix) and restarting your web server to see if this resolves the issue.

On the other hand, if your server is running on nginx, you’ll need to look for a completely different configuration file. By default this file is named nginx.conf and is located in one of a few common directories: /usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx. Once located, open nginx.conf in a text editor and look for the return or rewrite directives. For example, here is a simple block directive (i.e. a named set of directives) that configures a virtual server by creating a redirection from invalid-domain.com to the proper valid-domain.com URL:

server {
listen 80;
listen 443 ssl;
server_name invalid-domain.com;
return 301 $scheme://valid-domain.com$request_uri;
}

Rewrite directives in nginx are similar to the RewriteCond and RewriteRule directives found in Apache, as they tend to contain more complex text-based patterns for searching. Either way, look through your nginx.conf file for any abnormal return or rewrite directives and comment them out before restarting the server to see if the issue was resolved.

  • Check the Logs — Nearly every web application will keep some form of server-side logs. Application logs are typically the history of what the application did, such as which pages were requested, which servers it connected to, which database results it provides, and so forth. Server logs are related to the actual hardware that is running the application, and will often provide details about the health and status of all connected services, or even just the server itself. Google «logs [PLATFORM_NAME]» if you’re using a CMS, or «logs [PROGRAMMING_LANGUAGE]» and «logs [OPERATING_SYSTEM]» if you’re running a custom application, to get more information on finding the logs in question.
  • Application Code or Script Bugs — If all else fails, it may be that a problem in some custom code within your application is causing the issue. Try to diagnose where the issue may be coming from through manually debugging your application, along with parsing through application and server logs. Ideally, make a copy of the entire application to a local development machine and perform a step-by-step debug process, which will allow you to recreate the exact scenario in which the 301 Moved Permanently occurred and view the application code at the moment something goes wrong.

No matter what the cause, the appearance of a 301 Moved Permanently within your own web application is a strong indication that you may need an error management tool to help you automatically detect such errors in the future. The best of these tools can even alert you and your team immediately when an error occurs. Airbrake’s error monitoring software provides real-time error monitoring and automatic exception reporting for all your development projects. Airbrake’s state of the art web dashboard ensures you receive round-the-clock status updates on your application’s health and error rates. No matter what you’re working on, Airbrake easily integrates with all the most popular languages and frameworks. Plus, Airbrake makes it easy to customize exception parameters, while giving you complete control of the active error filter system, so you only gather the errors that matter most.

Check out Airbrake’s error monitoring software today and see for yourself why so many of the world’s best engineering teams use Airbrake to revolutionize their exception handling practices!

  • Десять фатальных ошибок гитлера
  • Десять типичных ошибок конфликтующего человека
  • Десять ошибок при скандинавской ходьбе
  • Десять ошибок при покупке генератора
  • Десять ошибок начинающего оратора