Verification: a143cc29221c9be0

Php 301 редирект на другую страницу

Php 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.

  • Перед тем как начать прописывать правила перенаправления, необходимо включить механизм преобразований (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 редиректа




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]



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, а во второй — новый)

Второй способ - перенаправление при помощи отправки заголовков (скрипта):

ASP-редирект



ASP.NET редирект

Найдите в корне своего сайта файл web.config и вставьте в секцию синтаксис:

ColdFusion редирект

<.cfheader statuscode="301″ statustext=" moved permanently><.cfheader name="Location" value="http://www.new-url.com">

JSP (Java) редирект

Данный способ подойдет для небольшой корректировки простых сайтов. Код можно прописать лишь в одном файле, а сам файл добавить на все нужные страницы, указав:

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-секундной задержки:

Если поставить значение 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 редиректе

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

Для чего настраивать 301 редирект

Код 301 — удобный и простой в реализации метод сохранения рейтинга определенной страницы. Он пригодится вам при:

  • смене домена на новый;
  • изменении написания урла страницы в рамках поисковой раскрутки, смены CMS либо по другим причинам;
  • переносе разделов на субдомены;
  • удалении страниц-дублей из индекса;
  • склейке зеркал веб-ресурса;
  • удалении старой страницы. В такой ситуации, как правило, отображается ошибка 404, но изобилие подобных сообщений плохо воспринимается человеком и поисковиками.

Функцию переадресации можно считать своего рода палочкой-выручалочкой. При переезде целого сайта или отдельных его страниц 301 redirect сохранит все результаты усилий по раскрутке: авторитет доменного имени, ранжирование в поисковике. Главное – пользоваться инструментом уместно и грамотно.

Востребованные виды редиректов

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

301 Moved Permanently

Постоянный редирект, который специалисты настраивают при окончательном переходе на новый урл. Он передает на документ практически весь ссылочный вес и склеивает внутренние метрики.

302 Moved Temporarily и 302 Found

Временный редирект. Он не склеивает накопленные внутри страницы метрики. Ответ сервера будет определяться версией протокола HTTP.

Для 1.0 это 302 Moved Temporarily, то есть, публикация временно переместилась на другой урл.

Если версия протокола 1.1, поступает ответ 302 Found (документ не обнаружен).

307 Temporary Redirect

Эту временную переадресацию настраивают редко. Она нужна для тех случаев, когда, например, на сайте ведутся кратковременные технические работы.

На заметку. Настраивать постоянную переадресацию 301 нет смысла, если переезд временный или запланирован из-за получения санкций. Учтите, что все эти проблемы переедут вместе с вами.

нюансы настройки 301 редиректа

Нюансы настройки 301 редиректа

Есть много способов, как правильно настроить переадресацию. Мы сосредоточимся на самых популярных.

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

Метод актуальный только для веб-серверов Apache. Сначала вам нужно найти файл .htaccess. Обычно он находится в корневой директории ресурса. Попасть в эту папку можно несколькими способами:

  • через файловый менеджер хостинга;
  • с помощью подключения через FTP клиента;
  • посредством доступа SSH.

Итак, вы нашли файл .htaccess. Теперь кликните по нему правой кнопкой мыши и выберите редактирование.

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

Можно приступать к настройке 301 редиректа в .htaccess. Чтобы было проще сориентироваться, ознакомьтесь с несколькими реальными примерами.

Примеры redirect

Переадресация со статической страницы на другую

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

примеры redirect

Или:

переадресация со статической страницы на другую

При выявлении битой ссылки можно переадресовать посетителя на другую страницу посредством настройки 301 редиректа.

С без www на www / с www на без www

Сначала рассмотрим 3 способа переадресации с www на без www.

Способ 1:

с www на без www - способ 1

Способ 2:

с www на без www - способ 2

Способ 3:

с www на без www - способ 3

Теперь без www на www.

Способ 1:

без www на www - способ 1

Способ 2:

без www на www - способ 2

Как проводится СЕО-аудит

КОМПЛЕКСНЫЙ АУДИТ САЙТА

Аудит сайта — это анализ и изучение сайта с целью выявления всех ошибок и факторов, оказывающих влияние на техническую и коммерческую успешность интернет-проекта.

ЗАКАЗАТЬ АУДИТ САЙТА

Переадресация с одного домена на другой

Актуально для ситуаций, когда нужно изменить домен ресурса и задать 301 редирект ссылки со старого на новый. Используйте такой код:

переадресация с одного домена на другой

Перенаправление на поддомен

Код задается следующий:

перенаправление на поддомен

Редирект со страницы /index.php на главную

Вставляйте код:

редирект со страницы /index.php на главную

Перенаправление на главную

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

перенаправление на главную

Перенаправление на страницу ошибки 404

Настройте следующий код:

перенаправление на страницу ошибки 404

Переадресация на мобильную версию

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

переадресация на мобильную версию

Массовый redirect для категорий

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

массовый redirect для категорий

Помните, что все упомянутые операции выполняются в файле .htaccess!

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

Если вы используете IIS, придется вносить записи в web.config. В файле хранятся все основные настройки сервера. Это аналог .htaccess для Apache.

Полезные рекомендации по настройке

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

И еще несколько советов по настройке 301 ответа сервера:

  1. Контент страницы, куда выполняется перенаправление, должен отвечать содержимому страницы, с которой настраивается redirect.
  2. Не ставьте 2-3 переадресации подряд, поскольку это сильно нагружает ваш сервер.
  3. Не торопитесь увидеть результаты. Поисковые системы не сразу реагируют на изменения и находят код 301. Им нужно время. Обычно на это уходит максимум 2–3 недели.

Трудно объяснить сложное простым языком. Настройка 301 редиректа для новичков не вполне понятна. Если следовать всем рекомендациям, получится успешно выполнить перенаправление.

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

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

Обязательно перед тестом почистите кэш!

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

Распространенные ошибки при настройке переадресации

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

  • попытка выполнить переадресацию между страницами ресурса без изменения их урлов в ссылках;
  • использование временного редиректа там, где нужен постоянный;
  • неверно выбранный тип переадресации;
  • редирект robots.txt;
  • переадресация на контент, который не соответствует содержанию старой страницы;
  • редирект, который не приводит к 200 странице.

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

Для чего используется 301 редирект?

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

Причины использования 301 редиректа:

  • У сайта сменилось доменное имя, производится его перенос.
  • Указание зеркал сайта, к примеру, с www и без. Также это актуально в случае установки SSL сертификатов.
  • Сменился URL-адрес страницы с целью SEO-продвижения, например, в него были прописаны ключевые слова.
  • Устранение проблем с дубликатами страниц.
  • Переезд страницы на новый адрес, но при этом необходимо сохранить ее вес и пользовательский опыт.

301 редирект vs тег Canonical

Перед тем как понять, в каких случаях используется 301 редирект, а в каких тег Canonical, необходимо разобраться в ключевых их различиях.

При 301 редиректе происходит физическое перенаправление посетителя или поискового робота. Т.е., этот способ переадресации ориентирован как на ботов, так и на людей. Тег Canonical в свою очередь, предназначен исключительно для роботов. К примеру, у нас есть две страницы, обозначим их как 1 и 2, при этом, вторая является основной (канонической), а первая – дубликатом (содержание страниц идентично). Наша задача состоит в том, чтобы в поисковой выдаче ранжировалась основная страница, т.е. вторая, но при этом первая также должна работать. В этом случае, на помощь приходит тег Canonical, который позволяет указать поисковому роботу на каноническую страницу.

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

301 или 302 редиректы

Оба этих вида редиректов физически перенаправляют пользователей и роботов на альтернативные URL-адреса, однако, у них есть существенные различия. 301 редирект сообщает поисковым краулерам о том, что страница переехала на новый адрес на постоянной основе. А 302 – на временной, к примеру, на период проведения какой-либо акции.

Важно не допускать путаницы в использовании 301 и 302 редиректов, в противном случае, это негативно скажется на SEO-продвижении страницы или ресурса в целом.

Где настраивается 301 редирект?

Разберем наиболее популярные и универсальные способы настройки 301 редиректа на сайте.

Как настроить 301 редирект с помощью файлов сервера Apache

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

Расположение файла httpd.conf варьируется в зависимости от типа операционной системы и версии Apache:

  • FreeBSD (версия сервера 1.3) – /usr/local/etc/apache/httpd.conf.
  • FreeBSD (версия сервера 2.2) – /usr/local/etc/apache22/httpd.conf.
  • Убунта (версия сервера 1.3) – /etc/apache/httpd.conf.
  • Убунта (версия сервера 2.2) – /etc/apache2/apache2.conf.
  • Linux – /etc/httpd/conf/httpd.conf.

Через плагины в CMS

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

Wordpress

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

Redirection

Плагин с широким функционалом, заточен исключительно под настройку редиректов. Вот часть функций, которые в нем представлены:

  • Настройка переадресации со страницы 404-ошибки.
  • Простая переадресация с одной страницы на другую.
  • Создание сложных правил перенаправления с нескольких страниц на одну и прочее.
  • Возможность автоматического добавления 301 редиректа при удалении или изменении страниц.

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

Simple 301 Redirects

Также простой плагин, но с менее богатым функционалом. Интерфейс представлен в виде двух полей: URL-адрес страницы-исходника и URL-адрес страницы, куда настраивается 301 перенаправление (исключительно). Его удобно использовать при переезде сайта с одного домена на другой, либо при небольшом количестве страниц, с которых требуется настроить 301 редиректы. Т.к. отсутствуют возможности настройки автоматических правил, для больших массивов адресов его использовать нецелесообразно.

SEO Redirection

В отличии от прошлого плагина, SEO Redirection позволяет настраивать все виды редиректов, а не только 301. В целом, это мощный инструмент, с большим количеством функций, со средней оценкой пользователей в 4 звезды. Есть возможность настройки автоматических правил, а также просмотра статистики по перенаправлением отдельно взятых URL-адресов.

Плагин SEO Redirection
Плагин SEO Redirection

Easy Redirect Manager

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

Битрикс

В случае с Битриксом, настройка 301 редиректа возможна, например, через модуль «Редирект мастер» или же через правку файла .htaccess:

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

Отредактировать сам файл можно напрямую через админку сайта:

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

Через PHP-условие

Данная возможность настройки 301 редиректов больше подходит для самописных CMS-систем, работающих на PHP. Для ее реализации необходимо добавить в код индексного файла (чаще всего index.php) функцию header() с указанием типа редиректа и Location – адреса сайта.

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

Итак, перейдем непосредственно к настройке. Пример, 301 редирект с одного домена на другой:

$ref=$_SERVER["QUERY_STRING"];
if ($ref!="") $ref="?".$ref;
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://newdomain.ru/".$ref);

Обратите внимание, указывается только новый домен.

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

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.domain.ru/catalog/page.htm");

Здесь указывается страница, на которую срабатывает перенаправление.

HTML-редирект

Подходит для статичных HTML-сайтов, у которых требуется настроить редирект на одну или несколько страниц. Этот способ подразумевает добавление в код специального метатега, разберем сценарии.

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

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

Параметр content отвечает за задержку, указывается число, равное секундам.

Правила настройки файла .htaccess для 301-редиректа

Правил настройки 301 редиректов существует достаточно много и применяются они в зависимости от поставленной задачи. Разберем самые популярные.

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

Короткая версия варианта: 

Redirect 301 /primer-page1.html/ https://site.ru/primer-page1.html/

Развернутая версия:

RewriteCond %{REQUEST_URI} ^/primer-page1.html/$
RewriteRule ^.*$ https://site.ru/primer-page1.html? [R=301,L]

С главной страницы на каталог

Redirect 301 / https://site.ru/catalog

С каталога на главную

Redirect 301 /catalog https://site.ru

С одного домена на другой

RewriteEngine On
RewriteCond %{HTTP_HOST} domain1.ru
RewriteRule (.*) https://domain2.ru/$1 [R=301,L]

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

При установке SSL-сертификата, настраивается перенаправление с http на https:

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

Либо альтернатива:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

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

С без www на с www

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

301 редирект для отдельного IP-адреса

RewriteEngine On
RewriteCond %{REMOTE_ADDR} 111.222.333.444
RewriteRule ^(.*)$ http://site.ru [R=301,L]

Перенаправление только с главной страницы сайта

В этом случае, 301 редирект будет срабатывать исключительно при посещении главной страницы сайта:

RewriteEngine On
RewriteRule ^$ https://domain.ru [R=301,L]

Борьба с дубликатами

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

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

Меняем отображение расширения страницы, к примеру, с .htm на .html:

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

Перенаправление с 404 на главную страницу

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

Обратите внимание, требуется активация функции mod_rewrite с помощью команды RewriteEngine on, но, если применяется несколько правил перенаправления в одном .htaccess, то данная команда прописывается один раз.

Памятка по используемым символам и обозначениям

Директива RewriteCond определяет условие для правила RewriteRule при соблюдении которого, срабатывает редирект. Правила представляются в виде регулярных выражений.

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

  • \ – экранирующий слеш, сохраняет символы, идущие после него в исходном виде.
  • ^ – начало строки.
  • $ – конец строки.
  • ! – знак отрицания.
  •  . – любой символ.
  • ( ) – применяется для обозначения группировки символов.
  • # – комментарии.

Модификаторы:

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

  • ? – ставится после символа, который может присутствовать или отсутствовать. Например, htm?l – под правило попадает и htm и html.
  • * – ставится перед символом, который может повторятся от 0 (отсутствует полностью) до 65536 раз. Пример, htm*l, под правило попадают htm, html, htmm.
  • + – аналогично предыдущему, но символ может повторятся от 1 до 65536 раз.

Флаги:

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

  • NC (nocase) – если правило срабатывает, то регистр символов не имеет значения.
  • R (redirect) – прекращает процесс преобразования, возвращает ответ браузеру в виде редиректа.
  • L (last) – данная ссылка является окончательной, при этом останавливается процесс преобразования.

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

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

  • bertal.ru – сервис, который позволяет получить HTTP-заголовок страницы.
  • Screaming Frog SEO – платная программа, которая позволяет сканировать сайт и находить редиректы.

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

Памятка по используемым символам и обозначениям

Директива RewriteCond определяет условие для правила RewriteRule при соблюдении которого, срабатывает редирект. Правила представляются в виде регулярных выражений.

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

  • \ – экранирующий слеш, сохраняет символы, идущие после него в исходном виде.
  • ^ – начало строки.
  • $ – конец строки.
  • ! – знак отрицания.
  •  . – любой символ.
  • ( ) – применяется для обозначения группировки символов.
  • # – комментарии.

Модификаторы:

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

  • ? – ставится после символа, который может присутствовать или отсутствовать. Например, htm?l – под правило попадает и htm и html.
  • * – ставится перед символом, который может повторятся от 0 (отсутствует полностью) до 65536 раз. Пример, htm*l, под правило попадают htm, html, htmm.
  • + – аналогично предыдущему, но символ может повторятся от 1 до 65536 раз.

Флаги:

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

  • NC (nocase) – если правило срабатывает, то регистр символов не имеет значения.
  • R (redirect) – прекращает процесс преобразования, возвращает ответ браузеру в виде редиректа.
  • L (last) – данная ссылка является окончательной, при этом останавливается процесс преобразования.

Базовый метод настройки редиректа PHP

Большинство руководств скажут вам, что для создания PHP редиректа вы можете просто использовать функцию header() в верхней части ваших страниц. В этом случае вы используете функцию, чтобы отправлять новый URL, например:

header('Location: '.$newURL.php);

Поскольку эта функция должна предшествовать отправке в браузеры ваших пользователей какого-либо HTML или текста, её нужно поместить прямо вверху страницы. Это означает, что она должна стоять перед объявлением , перед кодом Java и PHP. Затем она отправит пользователей на новый URL-адрес.

Всё предельно ясно, однако функция header() не так проста, как кажется. Итак, давайте посмотрим, как правильно использовать эту функцию.

Die() и Exit()

Во-первых, вы должны использовать модификатор die() или exit() каждый раз, когда используете редирект. Если вкратце, то проблема в том, что сканеры и роботы могут игнорировать заголовки, и поэтому страница, с которой, как вы думали, вы перенаправляете, полностью доступна для них. Другими словами, если вы используете редирект путём отправки нового заголовка, чтобы защитить определённую страницу, это не даёт вам никакой защиты.

Вот почему вам нужно предотвратить обработку остальной части страницы. Для этого добавьте die() или exit() после перенаправления:

header("Location: .$newURL.php");
die();

Относительные и абсолютные URL

Теперь поговорим об относительных и абсолютных ссылках в переадресации. RFC 7231 позволяет использовать оба типа, однако, если вы используете относительные редиректы следует быть особенно осторожным. Дело в том, что некоторые конструкторы сайтов объединяют и переименовывают страницы PHP. Это означает, что если вы работаете над своим PHP через конструктор сайтов, все ваши редиректы могут просто поломаться.

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

Коды статусов

Третья проблема стандартных перенаправлений PHP заключается в том, что оператор PHP «location» по умолчанию возвращает код HTTP 302 (англ.). Вам нужно запретить ему это делать, поскольку многие браузеры реализуют этот код совсем не так, как он должен функционировать на само деле: они, по сути, используют команду GET вместо выполнения «настоящего» редиректа.

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

Пока этот вопрос остаётся открытым, используйте HTTP 303.

Проверка документации

Помимо основных мер предосторожности, описанных выше, вам следует потратить некоторое время на то, чтобы прочитать документацию по использованию редиректов PHP. Ознакомьтесь с руководством по PHP и документацию W3C (англ.), чтобы быть уверенными в своих действиях и выполнить все настройки в соответствии с последними стандартами.

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

Логотип и Заголовок "Список Уязвимостей" на Сайте PrivacyCanada

Другие методы

Учитывая все эти проблемы, вы, вероятно, задаётесь вопросом, зачем вообще использовать редиректы PHP. И это вполне логический вопрос. Несмотря на то, что PHP редирект обычно выполняется быстрее, чем другие типы перенаправлений, и, следовательно, является инструментом повышения скорости сайта, существуют и другие варианты.

Есть два основных подхода. Вы можете использовать элемент HTML для перенаправления из HTML-части вашей страницы или же использовать JavaScript. Первый подход — будет выглядеть так:

Второй подход — с использованием JavaScript — выглядит немного элегантней и более профессионально:

window.location.replace("http://newpage.php/");

Оба варианта будут выполняться немного медленнее, чем перенаправление header(), однако являются более гибкими.