Как изменить редирект

Редирект можно настроить разными способами: в панели управления хостингом, через код HTML, через PHP, с помощью web.config, через .htaccess, а также другими способами. Рассмотрим, в чём особенность редиректа через .htaccess и как настроить 301-й .htaccess-редирект с одной страницы на д…

Редирект можно настроить разными способами: в панели управления хостингом, через код HTML, через PHP, с помощью web.config, через .htaccess, а также другими способами. Рассмотрим, в чём особенность редиректа через .htaccess и как настроить 301-й .htaccess-редирект с одной страницы на другую, а также Bitrix redirect.

Если вы ещё не знаете, зачем нужно перенаправление страниц сайта, читайте нашу статью Что такое редирект.

В каких случаях подойдет .htaccess-редирект

Чтобы понять, для каких целей лучше подходит .htaccess-редирект, разберёмся, что такое .htaccess.

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

Файл .htaccess позволяет вариативно настроить сайт. Действие команд из .htaccess распространяется на папки и подкаталоги, расположенные в одной директории с этим файлом. Если для какой-либо вложенной директории нужны иные инструкции, в ней также можно создать .htaccess. Если .htaccess расположен в корневой директории сервера, его действие распространяется на весь сервер, кроме тех директорий, где находится другой файл .htaccess.

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

Для чего нужен 301-й редирект

Помимо разных способов настройки переадресации, существуют разные виды редиректов. Каждый из них имеет своё кодовое название. Основные виды:

  • 300 — сообщает, что по искомому запросу можно перейти не на одну, а на несколько альтернативных страниц;
  • 301 — постоянный;
  • 302 — временный;
  • 303 — на схожую по тематике страницу;
  • 305 — отсылающий к подключению через прокси-сервер.

Также существуют 304-й, 306-й и 307-й редиректы. Однако сейчас эти виды практически никто не использует. Один из самых популярных видов — это 301-й.

301-й редирект (Moved Permanently) — это постоянный редирект. Используется для перемещения страницы на новый URL-адрес насовсем. Когда поисковые системы встречают страницу с редиректом 301, они «понимают», что теперь необходимо индексировать новую страницу, а старую можно полностью исключить из индексации. Если настроить переадресацию 301 некорректно, на странице будет отображаться ошибка 404. Индексация страниц с ошибками приводит к снижению SEO-показателей всего веб-ресурса.

Как сделать редирект через .htaccess

Чтобы сделать перенаправление 301 через .htaccess, перейдите в каталог сайта и откройте .htaccess. Если файла ещё не существует, создайте его. После этого добавьте в файл строки кода из подходящей инструкции ниже.


301 редирект Битрикс

1С-Битрикс — популярная CMS в которой время от времени необходимо настраивать перенаправление.

  • Если вы хотите переадресовать домен с WWW на без WWW, укажите:
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange.php$ [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
    RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
</IfModule>

Где www.site.ru — домен, с которого происходит редирект, а site.ru — домен, на который происходит редирект.

  • Если вам нужно сделать редирект Bitrix с домена без WWW на WWW, введите комбинацию:
RewriteCond %{ENV:HTTPS} on 
RewriteRule .* - [E=SSL:s] 
RewriteCond %{HTTP_HOST} !^www.(.*) [NC] 
RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]

Где www. — домен, с которого происходит редирект, а www. — домен, на который происходит редирект.

  • Если вы хотите настроить в Битрикс редирект на другую страницу с http:// на https://, пропишите:
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange.php$ [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


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

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

RewriteEngine On
RewriteCond %{HTTP_HOST} old-site.ru
RewriteRule (.*) http://new-site.ru/$1 [R=301,L]

Где:

  • old-site.ru — домен, с которого происходит редирект;
  • new-site.ru — домен, на который происходит редирект.


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

Добавьте в .htaccess следующие строки:

RewriteEngine On
RewriteCond %{HTTP_HOST} site.ru/old-page
RewriteRule (.*) http://site.ru/new-page$1 [R=301,L]

Где:

  • site.ru/old-page — адрей прежней страницы,
  • site.ru/new-page — адрес новой страницы.


301 редирект с домена с WWW на домен без WWW

Добавьте в .htaccess следующие строки:

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

Где site.ru — имя вашего домена.


301 редирект с домена без WWW на домен с WWW

Добавьте в .htaccess следующие строки:

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

Где site.ru — имя вашего домена.


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

Добавьте в .htaccess следующие строки:

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

Где site.ru — имя вашего домена.


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

Добавьте в .htaccess следующие строки:

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

Где site.ru — имя вашего домена.


301 редирект с http:// на https:// для Linux

Добавьте в .htaccess код из нужного вам примера ниже:

  • Для всех страниц с http:// на https://

Для всех страниц с http:// на https://, в том числе и с http://www на 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]

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

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On 
RewriteCond %{ENV:HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  • Перенаправление на https только выбранной страницы

В примерах ниже переадресация настраивается для страницы login.php:

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

Или:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
  • Перенаправление на https всех страниц, кроме одной

В примере ниже редирект настраивается для страницы test.php.

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


301 редирект с главной страницы, кроме остальных страниц сайта

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

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


301 редирект с GET-параметрами

Если вам необходимо сделать .htaccess редирект с get параметрами, укажите:

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

Где site.ru — имя вашего домена.


301 редирект с массовой склейкой

Если вам необходимо сделать .htaccess редирект на index php, введите:

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

Где site.ru — имя вашего домена.

Внимание

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

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

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

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

Что в статье:

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

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

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

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

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

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

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

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

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

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

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

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

Разбираем:

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

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

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

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

RedirectPermanent / http://new-site.com

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

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

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

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

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

или

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

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

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

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

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

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

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

или

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

Файл .htaccess с двумя редиректами: с сайта с www на сайт без www и со страниц без / на страницы со / в конце

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

26 сентября 2019

18 378

7

Время чтения ≈ 19 минут

Как сделать 301 редирект

Содержание:

  • Что такое редирект 301
  • Для чего он нужен
  • Способы настройки
  • Настройка 301 редиректа в .htaccess
  • Предварительная подготовка
  • Склейка зеркал сайта
  • Редирект http/https (с http на https, с https на http)
  • Изменение домена
  • Редирект на страницу с другим url (без параметров, с параметрами)
  • Редирект с index.php на главную
  • Редирект со страниц со слешем на без слеша (без слеша на слеш)
  • Код 404 Not Found
  • Как должен выглядеть файл .htaccess
  • Постоянный редирект для Nginx (на «с www», на «без www»)
  • Редирект для PHP
  • Редирект в разных панелях управления хостингом
  • 301 редирект для популярных CMS
  • Автоматическое создание кода
  • Циклическое перенаправление
  • Проверка работоспособности
  • Заключение

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

Правильно сделать такое перенаправления поможет постоянный редирект или 301 Redirect. Что это такое и как настроить расскажем в этой статье.

Редирект — это процесс, при котором пользователь перенаправляется с неактуальной страницы на актуальную. Это может быть http и https или адрес с/без www. Редирект может выполняться как на сервере, так и в браузере. Но первый вариант считается предпочтительным, так как серверный редирект не замедляет загрузку страниц.

Как сделать 301 редирект

Permanent Redirect 301 («301 редирект», «постоянный редирект», «код состояния HTTP 301» или «301 редирект страницы») – один из двух наиболее распространённых видов редиректа, наряду с Temporary Redirect 302. Этот ответ сервера на запрос браузера или поисковой системы означает, что произошла перманентная переадресация страницы. Она больше не доступна по текущему адресу, так как переместилась на новый адрес навсегда. Её прежний url стал недействительным, а вес с него переместился на новый адрес.

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

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

Как сделать 301 редирект

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

  1. Переезд сайта на новый адрес. Нужно настроить перенаправление, чтобы все запросы к old_site.com перенаправлялись на new_site.com.
  2. Установка SSL-сертификата. Чтобы запросы к страницам, которые начинаются на http, перенаправлялись на адреса с префиксом
  3. Смена URL страницы. Это может быть связано с переходом на другую CMS или SEO-оптимизацией. Нужно, чтобы с example.ru/1hdkr5 был настроен редирект на example.ru/page_adress.
  4. Перенос разделов на субдомены. Было www.example.ru/example, а нужно example.site.ru.
  5. Для аккумуляции трафика с онлайн-бренда, расположенного в разных доменных зонах. Вебмастер покупает домены example.com, example.ru, example.net, example.org и example.biz и на четырех последних сайтах настраивает редирект на example.com.
  6. Для быстрого перехода пользователя на мобильную версию ресурса со смартфонов и планшетных устройств.

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

Как сделать 301 редирект

  • Плагины для CMS. Особенно часто данный способ применяется для настройки 301 редиректа в WordPress.
  • Настройка через PHP. Редирект осуществляется через задания дополнительного условия в PHP-скрипте. При обращении к корневому файлу php браузер получает указание открыть одну страницу вместо другой.
  • Настройка при помощи HTML. Используется в случае, если необходимо изменить лишь одну страницу на статическом сайте. Редирект происходит путём добавления специальной метки (тега), в заголовок html-документа.
  • JavaScript — операция через браузер. Скрипт загружается в ПО, это более медленный способ. Работает только при включенном JavaScript в браузере. Используются преимущественно для редиректа с задержкой, когда сначала посетитель сайта видит страницу с обратным отсчетом и текстом. Для настройки в тег <head> добавляется скрипт.
  • Изменение файла .htaccess, отвечающего за дополнительную конфигурацию в серверах на Apache. Удобнее всего это сделать через панель управления хостингом.

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

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

Файл с расширением .htaccess – это дополнительный конфигурационный файл сервера Apache. Его используют для настройки веб-сервера, а также для обработки различных URL-адресов.

Как сделать 301 редирект - .htaccess

Для настройки 301 редиректа в файле .htaccess чаще всего применяют одну из трёх директив: Redirect, RedirectMatch или RewriteRule. Директивы относятся только к папке, где размещен .htaccess, а оттуда распространяются на дочерние папки.

Найти файл можно через панель управления хостинга (Cpanel, ISPmanager), либо использовать FTP-клиент. При любом варианте, нужно включить отображение скрытых файлов.

Предварительная подготовка

  1. Для создания 301 редиректа перейдите в панель управления вашего сайта.
  2. Проверьте наличие .htaccess файла в корневом каталоге сайта (public_html). Если файл отсутствует, создайте его.
  3. Рекомендуем все условия редирект записывать в блоке IfModule дабы избежать ошибок при выполнении файла htaccess.
    <IfModule mod_rewrite.c>
    </IfModule>
  4. Перед тем как начать прописывать правила перенаправления, необходимо включить механизм преобразований (RewriteEngine), при помощи команды:
    RewriteEngine On
  5. Хостинги применяют по умолчанию 302 или любой другой 3xx редирект, В связи с этим в правилах используются флаги. Рекомендуем дописывать в своих правилах [R=301,L].

Далее разберём наиболее распространенные варианты 301 редиректа через .htaccess.

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

Как сделать 301 редирект - с 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

Как сделать 301 редирект - 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 всех пользователей и поисковых систем, SEO значения при этом сохранятся.

Постранично

Бывают случаи, когда необходимо провести редирект на 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, в файл прописывается следующее:

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

Изменение домена

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

В том случае если необходимо перейти на другой домен, при этом сохранив 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 страницы, то есть перенести данные с одной страницы на другую страницу, при этом не потеряв SEO значения. В этом случае в файл .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]

Редирект со страниц со слешем на без слеша (для всего сайта)

Как сделать 301 редирект - со слешем

Для избегания дублей в файле .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 (страница не найдена) присваивается удалённой или несуществующей странице на сайте, а также часто возникает при попутке неправильно ввести url-адрес. Создание постоянного перенаправления с таких страниц актуально для контентных сайтов и крупных интернет-магазинов, где страницы часто удаляются по естественным причинам.  Тогда возникает потребность перенаправить посетителей на одну из главных страниц сайта, чтобы они не уходили с ресурса, при виде ошибки.

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

Постоянный редирект для Nginx

Этот веб-сервер наиболее часто используется в VPS-хостинге в связке с сервером Apache. В нем 301 редирект настраивается добавлением строк в конфигурационном файле nginx.config в секции server.

C www на без www

server {#...
if($host~ * www.(.*)) {
set $host_without_www $1;
rewrite ^ (.*) $ http: //$host_without_www$1 permanent;
}#...
}

Без www на с www

server {#...
if($host~ * ^ [ ^ .] + .[ ^ .] + $) {
rewrite ^ (.*) $ $scheme: //www.$host$1 permanent;
}#...
}

После сохранения изменений в файле нужно перезапустить сервер выполнением команды «service nginx restart».

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

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

  1. Загрузите файл index.php на жесткий диск.
  2. Сгенерируйте код.
  3. Вставьте код в текстовый файл, сохраните его и загрузите на сервер.
  4. Укажите основной URL в настройках сайта.

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

Cpanel

Как сделать 301 редирект - Cpanel

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

  • в строке «Тип» выбрать «Постоянный 301»;
  • в строке «https://www» из выпадающего списка выбрать домен сайта (например, example.ru);
  • в строке «Перенаправляет на» указать для домена адрес http://example.ru;
  • в блоке «Перенаправление www» поставить галочку напротив «Перенаправлять только с www»;
  • сохранить изменения кликом на «Добавить».

ISPmanager

Как сделать 301 редирект -ISPManager

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

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

WordPress

Для самой массовой CMS существуют десятки плагинов для создания постоянного редиректа. Наиболее популярные среди них: Redirection, Simple 301 Redirects, Quick Page, SEO Redirection и Safe Redirect Manager.

Как сделать 301 редирект - redirect checker

Для примера, разберём перенаправление через плагин Redirection. Его настройка производится через консоль сайта во вкладке «Инструменты» или через раздел плагинов. Чтобы сделать переадресацию, достаточно заполнить два поля — Source URL и Target URL. Соответственно, в первой графе будет указан старый адрес, во второй — новый, без или с www.

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

OpenCart

Для Opencart редактируется файл .htaccess. Код переадресации выглядит так:

RewriteCond %{QUERY_STRING} ^_route_=адрес_старой_страницы.html$
RewriteRule ^(.*)$ http://ваш_домен.ru/новой_страницы/? [R=301,L]

Битрикс

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

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

Joomla

Как сделать 301 редирект - Joomla

В панели администратора этой CMS нужно перейти в раздел «Компоненты» => «Перенаправление». В окне можно настраивать правила редиректа для различных страниц, а также отслеживать страницы с битыми ссылками и перенаправлять их на корректные адреса.

MODX

Для гибкой настройки переадресации стоит использовать плагин Redirector.

Автоматическое создание кода

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

Серверы для генерации кода

  • Seomagnifier — 301 для www.
  • 301 Redirect Code Generator Tool — для доменов и страниц.
  • Generate .htaccess— для страниц, разделов сайтов, доменов.

Циклическое перенаправление

Одна из самых распространённых проблем при настройке 301 редиректа — вероятность создания не одинарного перенаправления, а целой цепочки редиректов. Это может быть вызвано некорректной настройкой файла .htaccess, плагина CMS или прямым действием вируса. В очень вероятной перспективе такие «цепочки» приводят к появлению циклического редиректа — ошибки с кодом «ERR_TOO_MANY_REDIRECTS».

Как сделать 301 редирект - ERR_TOO_MANY_REDIRECTS

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

  • Prcy-info;
  • Website Planet;
  • Redirect Detective;
  • Mainspy;
  • Seogift.

Можно также установить специальные браузерные расширения для Google Chrome и Mozilla Firefox.

Действия при циклическом редиректе

  1. Если ошибка возникла в процессе настройки. Следует проверить корректность соблюдения правил работы 301 редиректа для конкретных адресов, по которым выдаётся ошибка.
  2. Если циклический редирект вызван вирусом. Когда зацикливание возникает при попытке открыть любой адрес на сайте, выход может быть один — откат к последней работоспособной версии, сохранённой в бекапе.
  3. Если зацикливание вызвано слишком длинной цепочкой редиректов (более пяти). Нужно сократить цепочку перенаправлений до одного шага.

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

Проверить редирект лучше всего обычным тестированием. Нужно ввести в адресную строку браузера www.example.ru и нажать Enter. Если все правильно, то должен открыться сайт по адресу example.ru.

Для более точной информации можно использовать онлайн-сервисы отслеживания. С ними можно работать «в 1 клик» — достаточно просто вставить ссылку на интересующую страницу.

Для примера, разберём работу в сервисе Redirect Checker. После ввода ссылки перенаправления при нормальной работе внизу появится надпись «Everything seems to be fine», то есть «все работает». Сервис автоматически проверит редирект и сообщит, если он работает некорректно. Если переадресация не действует, пользователь увидит такие сообщения: «Редирект для домена больше не работает» или «Перенаправление не настроено».

Заключение

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

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

Чтобы сайт после редиректа не только открывался по нужному адресу, но и работал без сбоев, ему нужна надёжная хостинг-площадка. Размещайтесь на VPS от Eternalhost, чтобы забыть о технических сложностях и полностью сосредоточиться на развитии своего интернет-ресурса!

Оцените материал:


[Всего голосов: 3    Средний: 3.7/5]

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

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

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

Как работает редирект

  1. В настройках сайта указывается адрес страницы (донора), с которой посетитель должен перенаправляться , например, www.kokoc.com, и страницы (акцептора), на которую он должен попасть, например, kokoc.com.
  2. Чаще всего правила прописываются не для отдельных страниц, а для целых групп. Например, правило может гласить, что со всех страниц сайта с WWW должна идти переадресация на страницы без WWW, как в нашем случае.

  3. Посетитель вводит в адресную строку браузера адрес www.kokoc.com.
  4. Браузер обращается к серверу сайта, запрашивая страницу www.kokoc.com.
  5. Сервер обрабатывает запрос, последовательно применяя все правила, которые прописаны в его настройках.
  6. На каком-то шаге он обнаруживает инструкцию «со страницы с WWW нужно переадресовать посетителя на страницу без WWW» и отправляет в ответ браузеру страницу с адресом kokoc.com. Если правило было прописано на самом начальном этапе обработки запроса — до загрузки контента первой страницы — переадресация пройдет максимально быстро и незаметно для пользователя.

  7. Посетителю в браузере загружается контент страницы kokoc.com.

В каких случаях нужны редиректы

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

Редирект на сайте используется почти для таких же целей:

  • добавляют или не добавляют перед доменом префикс WWW — рудимент, оставшийся еще с эпохи зарождения интернета;
  • ставят или не ставят в конце слеш (/);
  • пишут адрес заглавными буквами или строчными;
  • указывают или не указывают расширения .html, .htm, .php и т. д.

Эти варианты называют зеркалами. Важно сделать, чтобы при любом таком написании пользователь попал на одну и ту же страницу сайта, но не на 404.

Как бы не запутаться в зеркалах!

Как бы не запутаться в зеркалах!

Кроме того, поисковые системы не понимают, что зеркала — это вариации адреса одной и той же страницы. Например, для Google и «Яндекса» это 4 разных URL:

  • www.kokoc.com
  • kokoc.com
  • www.kokoc.com/
  • kokoc.com/

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

Редирект решает проблему перенаправления пользователя и дублей контента для ПС. Страницы принудительно склеиваются: все побочные варианты написания перенаправляются на один URL — тот, что мы будем считать основным.

Перенаправление с HTTP на HTTPS или обратно

После внедрения защищенного протокола HTTPS возник еще один вариант зеркала. URL на HTTP и на HTTPS также воспринимаются поисковыми системами как разные.

С HTTP на HTTPS тоже нужен редирект

С HTTP на HTTPS тоже нужен редирект

Переезд на другой домен

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

Смена CMS сайта

У нового движка может быть другой алгоритм формирования URL страницы. К примеру, если на старом сайте адрес страницы товара имел вид site.ru/catalog/tovar, то на новом это site.ru/product/tovar. Нужно настраивать редирект всех таких страниц, чтобы не потерять позиции в поисковых системах и трафик.

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

Если для адаптации сайта под мобильные вы выбрали вариант с отдельной мобильной версией, то нужно перенаправлять всех посетителей с мобильных устройств на нее. Например, основной адрес вашего сайта — site.ru, а мобильной версии — m.site.ru. Благодаря настройке редиректа сервер будет определять устройство посетителя, и если он использует смартфон или планшет — перенаправлять его на адрес с префиксом m.

Появление поддоменов

При расширении сайта часто принимается решение вынести отдельные каталоги товаров или услуг на поддомены. Например, вы сделали для бытовой техники поддомен bt.your-site.ru, а значит, понадобится редирект всех старых адресов раздела your-site.ru/bt на адреса bt.your-site.ru.

Удаление страниц

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

К примеру, у вас были страницы двух отдельных услуг: подготовки рекламных объявлений для PPC (site.ru/uslugi/kreativy) и комплексного запуска рекламных кампаний (site.ru/uslugi/reklama-ppc). Вы некоторое время активно продвигали обе услуги: покупали ссылки, создавали посты со ссылками на эти страницы в соцсетях и т. д. Но позже пришли к выводу, что подготовка объявлений как отдельная услуга не оправдывает себя, и стали предоставлять ее только в рамках комплексного запуска.

Хороший выход — удалить (скрыть) страницу о подготовке объявлений и поставить с нее редирект на страницу комплексного запуска. Конечно, позаботившись, чтобы на странице-акцепторе была информация, что подготовка рекламных объявлений входит в комплексную услугу. Так вы не потеряете ссылочный вес страницы и посетителей.

Изменение структуры сайта

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

Например, на вашем сайте в корне каталога был небольшой раздел «IP-камеры» с парой десятков товаров (site.ru/catalog/ip-camery). Постепенно вы расширили ассортимент продаж и решили создать целый раздел «Видеонаблюдение», а уже в нем подразделы с камерами, регистраторами и т. п. Странице с IP-камерами пришлось сменить адрес на site.ru/catalog/videonabludenie/ip-camery. Что делать, чтобы не потерять ее позиции в ПС, посещаемость, ссылочный вес? Конечно же поставить редирект с site.ru/catalog/ip-camery на site.ru/catalog/videonabludenie/ip-camery.

Перенаправление с устаревших страниц

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

Например, был некий популярный товар X. По каким-то причинам производитель снимает его с производства, и выпускает товар Y — с небольшими доработками, немного другим дизайном, но все равно это почти полный аналог X. Здесь два варианта решения:

  1. Написать на странице товара X, что он снят с производства, но имеется аналог — и дать ссылку. Неплохо, но есть риск, что покупатель не увидит ссылку, не захочет по ней переходить и т. д.
  2. Поставить редирект со страницы товара X на страницу товара Y и где-то на первом экране заметным образом указать, что это — улучшенная версия X. Рискованно только в том случае, если дизайн товара поменяли кардинально. Посетитель увидит не то фото, которое ожидал, может решить, что попал не туда, и сразу уйдет со страницы.

Классификация редиректов: отличия и применение

Все редиректы можно классифицировать по двум признакам:

  1. По типу переадресации. Каждому редиректу присваивается определенный тип — 301, 302, 307 и т. д. Он одновременно означает и код протокола HTTP, который будет выдаваться в ответ на запрос адреса страницы-донора, и статус этой страницы для поисковых систем.
  2. По способу реализации редиректа. Переадресацию можно настроить с помощью панели управления сайтом, директив файла .htaccess, PHP-скриптов, JavaScript и так далее.

Разберем отличия и применение каждого подвида.

Типы редиректов

300 «Множественный выбор» (Multiple Choices)

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

301 «Перемещена навсегда» (Moved Permanently)

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

302 «Перемещена временно» (Moved Temporarily)

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

303 «Смотри другое» (See Other)

Используется редко. В отличие от 301 или 302 редиректа этот код ответа не говорит, что «страница перемещена». Он говорит: «то, что ты хочешь, есть на другой странице, посмотри ее». На практике в основном, встречаются два варианта его использования:

  • Для временной переадресации со страницы товара, которого нет в наличии, на страницу аналогичного доступного товара. В отличие от ситуации со снятой с производства моделью целесообразность редиректа здесь довольно спорна. Возможно, посетитель хочет именно этот товар и был бы согласен подождать, пока он появится на складе. Корректнее и уважительнее по отношению к нему будет указать на странице, что товара нет в наличии, примерные сроки поставки и ссылку на аналог.
  • При перезагрузке на страницах с формами заказа или онлайн-оплат. Благодаря тому, что эта переадресация поддерживает только метод GET, после перезагрузки не будет создан еще один заказ, или проведена еще одна оплата.

304 «Не модифицировано» (Not Modified)

Используется редко и поддерживается не всеми браузерами. Применяется в случаях, когда на странице есть заголовки If-Modified-Since и Last-Modified. Если со времени последнего посещения на странице ничего не менялось, сервер советует браузеру, чтобы тот брал страницу из кеша. А для поисковых ботов это сигнал, что можно не переобходить страницу. В результате экономится краулинговый бюджет.

305 «Используй прокси» (Use Proxy)

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

306 — зарезервировано

Этот вид применялся раньше, но был отменен за ненадобностью. Сейчас он в статусе «зарезервирован» и не используется. Если в будущем появится необходимость в отдельном коде переадресации, вполне можно использовать 306.

307 «Временная переадресация» (Temporary Redirect)

Аналогичен 302-му, но с небольшими отличиями:

  • 307 редирект более новый и точный. Создан для HTTP 1.1.;
  • более корректно, чем 302 редирект, обрабатывает переадресацию запросов с методом POST;
  • поддерживается не всеми браузерами, поэтому в большинстве случае лучше использовать переадресацию 302 типа.

308 «Перемещено навсегда» (Permanent Redirect)

Аналог 301-го редиректа. Отличается тем, что сохраняет POST-метод обработки запроса, не меняя его на GET. Редиректы 301 и 308 обрабатываются Google-ботом одинаково.

Способы реализации редиректов

Все реализации редиректов можно разделить на 2 группы:

  1. Серверные. Переадресации с помощью правил .htaccess, панели управления хостингом, PHP-скриптов — это примеры серверных реализаций. Такие редиректы происходят очень быстро, практически моментально, так как выполняются еще на этапе обработки запроса сервером.
  2. Браузерные. JavaScript, HTML, Meta-refresh — это браузерные редиректы. Они гораздо медленнее серверных, так как срабатывают уже после загрузки страницы или ее части в браузере.

Стандартные переадресации — с HTTP на HTTPS, со старого адреса на новый и т. д. —чаще всего реализуются с помощью серверных редиректов. Они надежные, быстрые и незаметные. Браузерные редиректы в этих случаях использовать крайне не рекомендуется: помимо медленного срабатывания, они могут не поддерживаться браузерами (тот же JavaScript может быть отключен).

Разберем подробнее.

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

Большинство популярных панелей управления позволяют добавить в настройках правила типовых редиректов: с адреса, начинающегося на WWW на адрес без WWW, с HTTP на HTTPS и подобные. Что-то более точное в панели можно настроить, но уже через .htaccess — просто открывать и редактировать его вы можете и из панели управления хостингом.

Редирект через .htaccess

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

Важный момент: файл .htaccess существует только у сайтов под управлением веб-сервера Apache, но их — большинство.

Чтобы проверить, под Apache ваш сайт или нет, можно воспользоваться инструментом от Netcraft. Смотрите в разделе Hosting History, в колонке Web Server.

Kokoc.com — под управлением Apache

Kokoc.com — под управлением Apache

Редирект на серверах Ngnix

Если ваш сайт работает не под Apache, а под Ngnix, здесь все настраивается совершенно по-другому. Есть основной файл конфигурации для всех доменов на сервере — ngnix.conf, а есть отдельные файлы для виртуальных хостов, т. е. отдельных доменов.

Для редактирования правил используется терминал. Синтаксис переадресаций для Ngnix отличается от синтаксиса в .htaccess. Но есть специальные сервисы, например, Winginx, которые помогают преобразовать правила из .htaccess в правила конфигурации Ngnix.

Плагины CMS

Для того чтобы администратору сайта не приходилось вникать в особенности программирования на PHP или синтаксис директив в .htaccess, разработчики CMS и энтузиасты создали множество специальных плагинов:

  • OpenCart: Менеджер 301 редиректов, Менеджер редиректов для OpenCart 3.0.
  • Битрикс: Редиректы для SEO, Простой редирект страниц.
  • Joomla: Domainredirect.

Чтобы настроить в них редирект, вам потребуется только указать адреса страниц-доноров и акцепторов, или маску для их определения, а также основные параметры редиректа: постоянный, временный и т. п. Многие плагины имеют дополнительные преимущества: например, отслеживают изменение URL страницы-акцептора и соответственно меняют правило переадресации.

Особенно широкий выбор дополнений, конечно, в WordPress. Есть узкоспециализированные плагины, например, только для переадресаций на HTTPS (Easy HTTPS Redirection).

Простой плагин только для одной функции

Простой плагин только для одной функции

Есть многофункциональные: популярный плагин Redirection позволяет настраивать практически любые варианты редиректов.

Свыше 2 миллионов установок

Свыше 2 миллионов установок

А в арсенале Rank Math SEO не только настройка перенаправлений, но и большое количество других инструментов для оптимизации сайта.

В названии не просто так написано «лучший» — это действительно мегаполезное многофункциональное дополнение с хорошими отзывами

В названии не просто так написано «лучший» — это действительно мегаполезное многофункциональное дополнение с хорошими отзывами

PHP-редирект

Переадресация этого типа также относится к серверным, хотя и работает чуть медленнее той, что сделана через .htaccess. Правила прописываются обычно в индексном файле сайта (index.php).

Редирект через PHP оптимален в тех случаях, когда у вас много правил для отдельных страниц или групп страниц. Файл .htaccess может сильно нагружать сервер, из-за множества директив.

JavaScript-редирект

Это уже переадресация браузерного типа. Редирект произойдет только когда страница-донор будет загружена в браузере. JavaScript-редирект оптимально подходит для нескольких ситуаций:

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

Переадресация с задержкой

Переадресация с задержкой

Типовой случай: вы переехали на другой домен и при этом сменили дизайн. Если просто перенаправлять пользователя со старого на новый сайт без объяснений, он может не понять, что происходит, решить, что столкнулся с действием вируса и закрыть страницу. А вот если написать на старом домене: «Мы переехали! Сейчас вы будете перенаправлены на наш новый сайт» — поведенческие показатели будут лучше.

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

Подтверждение перехода по ссылке на сайте text.ru

Подтверждение перехода по ссылке на сайте text.ru

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

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

HTML-редирект или meta-refresh

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

Пример кода тега meta refresh с задержкой перенаправления 2 секунды

Пример кода тега meta refresh с задержкой перенаправления 2 секунды

У meta-refresh плохая репутация среди поисковых систем, так как этот метод довольно часто использовался для перенаправления на дорвеи. Кроме того, у meta-refresh есть и другие недостатки:

  • поддерживается не всеми браузерами;
  • приводит к ошибкам сканирования. Поисковый робот не сканирует страницу, на которой расположен метатег refresh, а сразу переходит к той, на которую ведет переадресация;
  • может определяться Google и «Яндексом» как спам, с соответствующими санкциями;
  • Google-бот может игнорировать страницы с этим метатегом и не индексировать их.

W3C (World Wide Web Consortium) не рекомендует использовать этот атрибут.

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

  • перенаправления посетителя после оформления заказа на страницу благодарности;
  • «подстраховки» переадресаций, реализованных на JavaScript — если браузер посетителя не поддерживает скрипты;
  • перенаправления посетителя на страницу со ссылками для загрузки корректных браузеров — если в его браузере ваш сайт будет отображаться и работать с ошибками.

Rel=«canonical»: редирект для поисковых систем

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

Тег rel=«canonical» сообщает краулеру, что страница, на которой он находится, не важна, не нужно ее индексировать и показывать в поиске. Зато есть аналогичная каноническая, оригинальная страница (в теге указывается ссылка) и нужно проиндексировать ее.

Как работает rel=«canonical». Источник: https://ahrefs.com

Как работает rel=«canonical». Источник: https://ahrefs.com

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

В каких случаях применять 301 редирект, а в каких — rel=«canonical»

Ситуация 301 редирект rel=«canonical»
страница удалена или уже неактуальна +
смена домена +
страница навсегда перемещена +
дублированный контент с точки зрения поисковых систем, но не пользователя (одинаковые описания товаров для разных цветов, размеров и т. п.) +
дублированный контент с точки зрения пользователя (статьи на одну и ту же тему) +
по сути одна и та же страница, но с разными url (сортировки товара в каталогах, страницы пагинации) +
у вас есть сайты с похожим контентом. в индексе нужно оставить только один, но для пользователей вы хотите сохранить доступными все. это поддерживается только google, у яндекса канонический адрес не учитывается, если в его качестве указан url в другом домене или поддомене. +

Примеры применения 301 редиректа и rel=«canonical»

Основное отличие ситуаций, в которых лучше использовать тег rel=«canonical», а не 301-й редирект, — вы хотите оставить страницу-донор доступной для пользователя.

Основное отличие ситуаций, в которых лучше использовать тег rel=«canonical», а не 301-й редирект, — вы хотите оставить страницу-донор доступной для пользователя.

Также атрибут rel=«canonical» можно применять в том случае, когда 301 переадресацию по каким-то причинам сделать очень сложно или невозможно.

Какой тип редиректа выбрать

Чаще всего правильным решением будет поставить 301 редирект. С точки зрения SEO в большинстве случаев это самая правильная переадресация:

  1. Вес и авторитет страницы-донора передается на страницу-акцептор.
  2. Сохраняется значение ссылок, что когда-то были проставлены на удаляемую из индекса страницу.
  3. Сохраняются позиции в поисковой выдаче.
  4. Не теряется трафик из органического поиска, переходы по закладкам в браузерах, ссылкам на сторонних ресурсах, из социальных сетей и т. п.

Оптимальная реализация редиректа — через файл .htaccess:

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

Дальше мы будем говорить именно о настройке 301 редиректа через .htaccess как о самом оптимальном и распространенном методе.

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

Где найти файл .htaccess и как его редактировать

Конфигурационный файл обычно расположен в корневой папке сайта. Его можно найти двумя способами:

  • через встроенный файловый менеджер на панели управления хостингом.
  • через панель управления вашей CMS. В некоторых движках есть возможность открывать и редактировать файлы сайта прямо из админки. Например, в Битрикс.
    при помощи FTP-клиента. Это самый распространенный способ.

Для работы с FTP чаще используется Filezilla — простой и бесплатный FTP-клиент. Если вы и дальше планируете вносить изменения на сайт самостоятельно, установите эту программу, она еще не раз пригодится

Интерфейс Filezilla и файл .htaccess

Интерфейс Filezilla и файл .htaccess

Файл можно править прямо на сервере: в Filezilla нажмите на него правой кнопкой мыши и выберите «Просмотр/Правка». Но для многих новичков удобнее скачать файл на компьютер.

Открыть и редактировать .htaccess можно с помощью простого текстового редактора — стандартного «Блокнота» в Windows. Но лучше использовать специализированные программы — например, бесплатный Notepad++.

Файл .htaccess может находиться не только в корневой папке, но и во вложенных. Иерархия простая: правила, прописанные в корневом файле, распространяются на весь сайт, а прописанные во вложенном — только на каталог. При этом правила в .htaccess каталога приоритетнее правил в «главном» файле.

Если вы не можете найти .htaccess, варианта три:

  1. Ваш сайт не под Apache. Как это проверить, мы писали выше;
  2. Файл называется по-другому. Очень редко встречается, но возможно. Актуальное название можно уточнить у хостинг-провайдера: это может быть, например, .config, .htaccess.http, access.conf.
  3. Файл еще не создан. Это самый распространенный случай. Нужно создать файл .htaccess и позже вписать в него директивы переадресаций.

Сделать новый файл .htaccess просто:

  1. Создайте пустой текстовый файл с расширением .txt.
  2. Переименуйте его, убрав имя и добавив расширение .htaccess. Файл готов.
  3. Если вы работаете на macOS, файл без имени не будет виден. Тогда присвойте любое имя, а переименуете уже после загрузки на сервер.

Сделайте резервную копию файла

Перед началом редактирования обязательно сделайте резервную копию файла .htaccess. С ее помощью проще всего будет отменить все изменения, если что-то пойдет не так.

Котик плохого не посоветует

Котик плохого не посоветует

Чтобы создать резервную копию, файл можно скачать на компьютер и запомнить, где вы его положили. Или сделать копию прямо на сервере и переименовать ее, например в .htaccess-backup.

Внедряйте правила по одному и проверяйте после каждого изменения

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

Для работы с командами в .htaccess их надо разъяснить. Редиректы в .htaccess чаще всего прописываются с использованием модуля mod_rewrite. В этом случае в примерах кода вы увидите команды RewriteEngine On, RewriteCond, RewriteRule (см. ниже).

Также редирект можно настроить с помощью директив Redirect либо RedirectMatch — команд из модуля mod_alias. Это стоит знать, чтобы не «смешивать» директивы и условия из разных модулей.

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

Комментарии

Строки в .htaccess, которые начинаются со знака решетки (#), не считываются и не выполняются сервером. Поэтому в таких можно оставлять комментарии к правилам — что здесь и для чего вы делали.

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

Флаги

В конце директивы RewriteRule указываются флаги. Чаще всего это два флага — [L,R=301]:

  1. L означает команду серверу прекратить преобразования после этой строки.
  2. R=301 — обозначение редиректа и его тип.

Что должно быть в начале файла

Перед правилами по переадресации нужно указать три директивы:

  • RewriteEngine On. Включает механизм преобразований модуля mod_rewrite.
  • Options +FollowSymLinks. Часто требуется для корректной работы модуля.
  • RewriteBase. Это базовая часть URL, которая будет дописана в начале всех адресов, получившихся после преобразований по директивам .htaccess. Чаще всего в RewriteBase указывается только слеш (/). В этом случае подразумевается, что все URL начинаются от корня сайта.

Лучше всего указать эти директивы в начале файла .htaccess, тогда перед правилами их уже не нужно повторять.

Кириллические адреса

В .htaccess нельзя использовать кириллические имена сайтов. Необходимо преобразовать их в формат punycode. Можно воспользоваться любым whois-сервисом — в нем будет указан адрес сайта в этом формате.

Название кириллического домена в формате punycode будет выглядеть примерно так

Название кириллического домена в формате punycode будет выглядеть примерно так

Добавьте блок IfModule

Если на вашем сервере не установлен модуль для редиректа, например mod_rewrite, то директивы для него в .htaccess могут вызывать ошибки. Сайт будет работать некорректно.

Окружите фрагмент кода с правилами для mod_rewrite условием IfModule — это поможет избежать проблем.

Например, вы хотите добавить вот такую переадресацию:

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

Чтобы избежать ошибок, сделайте так:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www.domain.ru$ [NC]
RewriteRule ^(.*)$ http://domain.ru/$1 [R=301,L]
</IfModule >

Сервер, увидев условие (If), проверит, установлен ли модуль mod_rewrite. Если нет — директивы внутри условия выполняться не будут.

Порядок правил имеет значение

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

Например, вы хотите перенаправлять URL вида site.ru/articles/…. на URL вида site.ru/blog/… Но при этом у вас есть страница site.ru/articles/faq, которую вам нужно перенаправить на URL site.ru/faq.

Если вы расположите вторую (частную) переадресацию в файле .htaccess ниже первой (более общей), то при получении запроса на страницу site.ru/articles/faq сервер дойдет до правила «перенаправляем все site.ru/articles/… на site.ru/blog/…» и выполнит его. Клиент попадет на страницу site.ru/blog/faq. Правильная переадресация не будет выполнена, так как она расположена ниже.

Почему нужно пробовать разные варианты

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

Попробуйте вариант с другим синтаксисом. Проще говоря, вам нужен код, в котором команды и условия написаны немного по-другому.

Совсем продвинутый вариант — узнать, какая у вас установлена версия Apache, найти по ней официальную справку и посмотреть, как должны выглядеть директивы. Другой вопрос, стоит ли тратить на это ваше время.

Используйте генераторы .htaccess

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

  • отмечаете, какой редирект вам нужен: обычно предлагается на выбор несколько типовых. Также можно указать страницы-доноры и акцепторы для 301 редиректа;
  • указываете дополнительные параметры редиректа, например, включение опции FollowSymLinks;
  • получаете готовый код и вставляете его в конфигурационный файл.

Некоторые генераторы, например, IKSWEB, предоставляют несколько вариантов кода — для разных версий Apache. также вы можете использовать:

  • Htaccess.ru
  • Aleydasolis.com
  • Htaccessredirect.net

Возможности Htaccess.ru

Возможности Htaccess.ru

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

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

Редирект сайта с WWW — на без WWW

Первый вариант:

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

Второй вариант:

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

Редирект сайта без WWW на URL с WWW:

Первый вариант:

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

Второй вариант:

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

Редирект на HTTPS с HTTP

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

Второй вариант:

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]

Четвертый вариант:

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

Редирект с страницы со слешем на URL без слеша, и наоборот

На URL без слеша

Первый вариант:

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]

На URL со слешем

Первый вариант:

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

Второй вариант:

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

Заменяем два последовательных редиректа на один

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

Пример переадресации с URL с WWW сразу на адрес с протоколом HTTPS и без префикса WWW, минуя промежуточный редирект (с HTTP на HTTPS):

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

Или второй вариант:

RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]

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

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

Проще всего воспользоваться директивой Redirect. Попробуйте один из вариантов:

Redirect 301 /old-page /new-page
или
Redirect 301 /old-page/ https://your-site.com/new-page

Можно перенаправить и с помощью модуля mod_rewrite:

RewriteCond %{REQUEST_URI} ^/old-page/$
RewriteRule ^.*$ http://your-site.com/new-page/? [R=301,L]

Переадресация папки

Первый вариант:

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

Второй вариант:

RewriteRule ^old-catalog /new-catalog/$1 [R=301,L]

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

Первый вариант:

RewriteCond %{HTTP_HOST} ^old-your-site.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.old-your-site.com [NC]
RewriteRule ^(.*)$ https://new-your-site.com/$1 [L,R=301,NC]

Второй вариант:

RewriteCond %{HTTP_HOST} ^www.old-your-site.com$ [NC]
RewriteRule ^(.*)$ http://new-your-site.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^old-your-site.com$ [NC]
RewriteRule ^(.*)$ http://new-your-site.com/$1 [L,R=301]

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

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

    Как работает кеш в браузере

  • Еще лучше проверять статусы страниц с помощью специальных сервисов:
    • Чекер от Websiteplanet.com
    • Проверка редиректов Prcy-info.ru
    • Redirect-checker.org
  • После настройки переадресации получили ошибку 500? Первое, что нужно сделать — проверить ваш код на опечатки, например, в адресе страницы, командах. Это самая распространенная причина.
  • Можно воспользоваться сервисом проверки ошибок в .htacces . Но если вы сделали опечатку в адресе страницы переадресации, сторонний сервис этого не обнаружит, нужно смотреть самому.

  • Если сайт большой и вы сделали массовую переадресацию десятков, сотен страниц — для проверки можно использовать Screaming Frog SEO Spider. Он покажет статус ответа сервера по каждой странице и еще массу полезной информации.

Типичные ошибки переадресаций

Редирект вместо каноникализации

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

Редирект robots.txt

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

Страница-акцептор нерелевантна донору

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

Например, Google в Search Console может указать по таким переадресациям ложную 404 ошибку. Для него ситуация выглядит так: страница не существует, правильного редиректа на 404 не сделано, а 301 редирект «не считается», так как ведет на нерелевантную страницу.

Цепочки переадресаций

Нередко возникают ситуации, когда страница редиректится несколько раз.

Например, вы удалили страницу A и поставили 301 переадресацию на страницу B. Позже удалили B и поставили редирект на страницу C. В итоге пользователь, который хочет попасть на страницу A, сначала перенаправляется на страницу B, а потом — на C.

Робот не понимает, зачем вы так делаете

Робот не понимает, зачем вы так делаете

В идеале редирект на странице A нужно исправить, поставив его сразу на страницу C.

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

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

Чем плохи цепочки редиректов:

  • они замедляют открытие конечной страницы, ухудшают поведенческие показатели сайта и Core Web Vitals;
  • поисковые роботы могут обработать не более 5-ти редиректов;
  • повышается риск возникновения циклических переадресаций, а они ведут к недоступности страницы.

Обнаружить множественные переадресации можно с помощью специальных сервисов:

  • Redirect Detective
  • Инструмент от Otzyvmarketing.ru
  • Расширение для Google Chrome — Redirect Path, и т. п.

Цепочки редиректов можно увидеть также в отчете Screaming Frog SEO Spider — он показывает число перенаправлений.

Циклические редиректы

Условный пример: вы настроили редирект со страницы A на страницу B, оттуда на страницу C. Но на странице C уже есть редирект на страницу A. Получается замкнутый круг переадресаций. Все URL в цепочке становятся недоступными для пользователей и поисковых систем.

Так и сломаться можно

Так и сломаться можно

На практике циклические переадресации часто возникают при путанице в правилах массового редиректа: страниц со слешем и без, с WWW и без и тому подобных.

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

Страницы с кодом 301 остались в карте сайта

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

Редирект ведет на 404 страницу

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

А сколько на вашем сайте таких дорог?

А сколько на вашем сайте таких дорог?

«Я все попробовал, но ничего не работает»

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

  • другие, ранее настроенные переадресации. В том числе, не в .htaccess, а в PHP;
  • версия Apache-сервера;
  • директивы, которые прописал хостер в главном конфигурационном файле Apache и т. д.

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

В техническом задании на настройку редиректов опишите все нюансы задачи, например:

  • Нужна постоянная переадресация или временная?
  • Только одной страницы или нескольких? Есть ли общие фрагменты в URL этих страниц?
  • Нужно ли предусмотреть исключения — страницы, которые не должны подчиняться общему правилу?

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

Бонус: как с помощью 301 редиректа увеличить посещаемость сайта

До этого мы рассматривали ситуации, когда переадресация применяется как вынужденная мера для устранения ошибок: после удаления или переезда страниц, для «склеивания» появившегося дублированного контента и т. п.

Однако 301 редирект можно использовать и как полноценный инструмент оптимизации.

Способ первый: объединяем статьи

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

Или разместить большую статью на одном из двух этих старых URL, если он подходит, а со второго поставить 301 редирект.

В итоге:

  • ссылочный вес и авторитет объединяемых страниц перейдет на новую;
  • поведенческие показатели вырастут — ведь объединенная статья полнее и лучше предыдущих;
  • profit! — вы получаете прирост трафика и позиций в поиске.

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

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

Брать ли для объединения статьи почти с полным отсутствием трафика, обратных ссылок и нулевыми позициями — спорный вопрос. Вы можете написать прекрасную новую статью, и она начнет хорошо ранжироваться, но вряд ли на это положительно повлияют редиректы с «пустых» старых статей.

Способ второй: склейка сайтов

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

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

Примерная стратегия:

  1. Купить сайт, похожий на ваш по тематике.
  2. Выбрать на нем страницы с хорошим ссылочным весом и трафиком, актуальной темой.
  3. Сделать страницы с таким же контентом на своем сайте. В идеале дополнить и расширить его. Если у вас уже есть релевантные страницы — использовать их.
  4. Поставить 301 редирект с каждого такого URL купленного сайта на ваши страницы.
  5. Те URL купленного сайта, у которых слабые показатели ранжирования и посещаемости, можно направить на уже существующие релевантные страницы вашего сайта. Или удалить.
  6. Остальные страницы можно удалить, или в крайнем случае — сделать 301 редирект на вашу главную.

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

10 главных мыслей статьи

  1. В большинстве случаев оптимален 301 редирект. 302 и другие временные типы переадресаций настраивайте только если страница будет недоступна временно.
  2. Лучше всего настраивать переадресации через файл .htaccess.
  3. Если вы хотите, чтобы страница осталась доступна пользователям, но не индексировалась поисковой системой — используйте тег rel=«canonical», а не редирект.
  4. Перед изменениями обязательно сделайте резервную копию .htaccess.
  5. Располагайте директивы в .htaccess от частных к общим, используйте блок Ifmodule.
  6. Внедряйте и проверяйте редиректы по одному. Проверяйте, очистив кэш браузера или специальными сервисами.
  7. Избегайте цепочек переадресаций и циклических редиректов.
  8. Страница-донор и страница-акцептор долдны быть релевантны другу другу, иначе поисковые системы будут считать такой редирект ошибкой.
  9. Есть много готовых правил редиректов для разных случаев, часть из которых мы приводим в статье.
  10. 301 редирект можно использовать для склейки не очень эффективных страниц и сайтов и повышения роста трафика на страницу и позиций.

301 редирект Привет, друзья. Сегодня хотелось бы обсудить очень заезженную, но всегда актуальную тему – это 301 Редирект (Permanent Redirect 301) – в seo-тусовке и без формальностей именно это подразумевается под словом «редирект». Технически это является ответом сервера на обращение к нему, этот ответ имеет код 301, обозначающий, что адрес обращения был изменен навсегда (moved permanently). В результате всех этих хитрых махинаций мы должны получить какой-то новый конечный адрес.

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

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

Так как пост вышел очень большим, то я решил сделать оглавление для вашего удобства:

  • Редирект:
    • Когда нужно делать?
    • Когда можно делать?
    • Когда не стоит делать?
  • Очень важные рекомендации!
  • Практика редиректа:
    • Через .htaccess
    • Через PHP
    • Через nginx
  • Проверка http-заголовков

Когда НЕОБХОДИМО делать 301 редирект

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

Следующий частый случай использования 301 редиректа – смена адреса сайта или склейка зеркал. Если вы решили поменять адрес сайта в связи с ребрендингом компании или зарегистрировали новый более красивый и короткий домен для указания его на печатной промо-продукции — очень важно, чтобы при обращении к адресу на старом домене пользователь попадал на ту же самую страницу (а не на главную страницу), но на новом домене. Что касается промо-сайтов, то обычно они состоят из одной-двух страниц, ссылки с которых ведут на основной сайт, или же при переходе на промо-сайт сразу происходит редирект на специальную страницу основного сайта. Еще иногда при создании сайта регистрируется сразу несколько доменов, например, из-за неоднозначного написания имени компании на латинице. Чтобы интуитивно набирая адрес, пользователь попал куда надо, и регистрируются несколько доменов – очень важно, чтобы со всех «вспомогательных» доменов происходил 301 редирект на один основной адрес. Ни в коем случае нельзя допустить, чтобы по всем адресам был доступен один и тот же сайт.

И еще о зеркалах – может случиться так, что ваш сайт будет доступен по адресам http://www.site.ru, http://site.ru и https://site.ru (последнее редко, но бывает) – это все классические ошибки, которые нельзя допускать, и в их решении как раз участвует 301 редирект. Так же как и в случае с разными адресами сайтов, необходимо определиться с главным зеркалом (с www или без www) и настроить редиректы на основное зеркало. Конечно, поисковики не глупые и в таких ситуациях часто сами справляются, а так же им можно помочь, сделав правильные настройки в панелях вебмастера и в robots.txt (для Яндекса, директива Host). Но seo – дело тонкое, и я бы не стал полагаться на удачу, а воспользовался проверенным способом!

Иногда случается очень неприятная ситуация, когда копия сайта оказывается доступной не только при вводе в адресной строке названия домена, но и IP-адрес сервера. Такая ситуация вряд ли может произойти на виртуальном хостинге, а вот если у вас выделенный сервер, то запросто. Это может являться причиной некорректной настройки сервера – решить проблему поможет отключение возможности доступа при обращении к ip-адресу, но лучше всего здесь выручит 301-редирект на уровне веб-вервера (apache или nginx). Пару месяцев назад у меня случилась как раз такая ситуация – у меня был выделенный сервер, на котором висела часть сайтов, но под один из сайтов я решил взять еще один отдельный сервер. Я перенес сайт, все работало как часы, и вот однажды натыкаюсь в выдаче Гугла на клон моего сайта – шок, паника – оказалось, что это ip адрес моего нового сервера и, разумеется, на нем живет мой сайт, а при обращении сервер отдает ответ 200 OK, и Google проиндексировал его полностью. На предыдущем сервере такой проблемы не было, там изначально был настроен 301-редирект с ip на домен, указанный в качестве основного для этого ip. Теперь я научен горьким опытом и всегда проверяю такие вещи – будьте в курсе и вы, не повторяйте ошибок. Проблему решили путем добавления в конфиги веб-сервера nginx 301 редиректа на основной домен, пример кода покажу в практической части поста ниже.

Ситуация подобная предыдущей – когда копия сайта находится и доступна через служебный тестовый домен, например, вида site.hosting.ru. Такие случаи в моей практике тоже встречаются, и, в отличие от предыдущего случая, это свойственно как раз для виртуального хостинга. Для чего такое существует? Например, у вас еще не куплен домен или вы переносите сайт с одного хостинга на другой, а NS сервера для домена не сменили, или еще не обновились записи DNS у провайдера. В таких ситуациях и делают тестовые адреса, где вы можете все настроить и установить, прежде чем перенаправлять адрес сайта на новый хостинг. И вот некоторые хостеры грешат тем, что не закрывают доступ к таким техническим адресам и при этом даже не запрещают их индексацию. Если и у вас случилась эта неприятная ситуация, то стоит попробовать прописать 301-редирект с технического адреса на основной в файле .htaccess.

Ну и, конечно же, 301 редирект очень любят применять правильные сеошники для борьбы с различными дублями страниц. Почему только правильные сеошники? Да потому, что неправильные хуй забили на сайт клиента и, что вполне вероятно, даже не заходя на сайт, стали закупать ссылки – увы, это не редкость. Ко мне периодически обращаются заказчики, которые хотят проверить добросовестность своих подрядчиков/сотрудников, отвечающих за оптимизацию и продвижение сайта, насколько качественно идет работа – заказывают seo аудит сайта – и пока еще ни разу не было такого, чтобы я не нашел на сайтах ошибок или недоработок. Так что, имейте в виду – я всегда рад вам помочь. Вернемся же к дублям – я считаю, что вместо того чтобы закрывать дубли от индексации, необходимо делать редирект на основной адрес, а всякие rel=”canonical” это уже не так интересно. Разумеется, существует масса случаев, когда дубли вынужденные, и тогда без канонизации не обойтись, но если есть возможность сделать редирект, обязательно делайте его. Частые случаи дублей, которые необходимо проверять всегда: адреса со слешем на конце и без, адреса с параметрами и метками – как это решать, я расскажу ниже.


Когда МОЖНО делать 301 редирект

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

Redirect 301 можно использовать в качестве ответа сервера вместо ошибки 404 Not Found – другими словами, пользователь, перейдя по неправильной ссылке или на несуществующую страницу, увидит не сообщение, мол, «Извините, такой страницы больше нет», а будет перемещен на другую существующую страницу. Это очень спорный момент среди специалистов, а потому я свое мнение никому не навязываю. Но я предпочитаю использовать именно редирект вместо 404 ошибки, и тут существует несколько вариантов развития событий… Смотрите, есть 2 категории 404 ошибок: первая – классическая, когда страницу действительно удалили, вторая – когда появление ошибки связано с кривыми внешними ссылками. В первом случае, наверное, не стоит делать редирект, а оставить 404 ошибку как она есть. А вот во втором случае стоит озаботиться редиректом на правильный url-адрес, если его можно восстановить из битой ссылки, или редиректом на главную страницу (или категорию).


Когда НЕ СЛЕДУЕТ делать 301 редирект

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

Самое главное, чтобы не наделать ошибок, не стоит связываться с редиректами, если вы на 100% не уверены в том, что вы делаете или в чем-то сомневаетесь. Примите это как дружеский совет :)

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

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

Существует очень много способов сделать 301-редирект: через htaccess, php, javascript, настройки сервера и т. д. – так вот не надо пытаться использовать сразу все методы одновременно, слишком велика вероятность «разногласий» между разными способами и можно, например, получить бесконечное циклическое перенаправление.


Важные рекомендации и советы при работе с редиректами

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

http://site.ru/tax/term/30 ->
http://www.site.ru/tax/term/30 ->
http://www.site.ru/tax/term/30/ ->
http://www.site.hosting.ru/404.php ->
http://www.site.ru/404.php

А еще в итоге страница http://www.site.ru/404.php, которая должна отдавать 404 ошибку, отдает ответ 200 OK. Это даже мне взорвало мозг, а представьте, что подумал бы поисковый робот, попав в такую карусель! Мало того, что в цепочке поучаствовали три разных домена, так еще и страница ошибки говорит, что она не ошибка и ее надо индексировать.

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

Составляя привила редиректов в .htaccess исключайте реальные адреса директорий и файлов на сервере и следите за выборкой. Ситуация для сайта, попавшего мне однажды на аудит – в борьбе с дублями страниц категорий со слешем на конце и без, вебмастер перестарался немного и наоборот только усугубил проблему. Мало того, что под правила перезаписи попали и реальные файлы js-скриптов и css-стилей из-за чего они перестали корректно работать, так еще и некоторые страницы получили ненужный слеш на конце и появились дубли. Друзья, тщательно следите, чтобы составленные правила распространялись только на ту группу адресов, с которой вы работаете, и ограничивайте все остальные.

Для поиска проблемных страниц и их адресов, от которых необходимо избавиться, используйте возможности панелей вебмастера от Яндекс и Google. Для Яндекса Вебмастер: Выбираем сайт –> Индексирование сайта –> Исключенные страницы. Для Google Webmaster: Выбираем сайт –> Оптимизация –> Оптимизация HTML; А так же: Выбираем сайт –> Конфигурация –> Параметры URL.

Особенности индексации и переиндексации редиректов в Яндекс и Google. Когда вы будете бороться с дублями и проблемными адресами, разумеется, вы будете ждать удаления ошибок из панелей вебмастера, тут есть некоторые особенности. С Google все просто – настроили редиректы, изменения проиндексируются в течение 2 недель, за это же время начнут исчезать ошибки и из панели вебмастера, обычно через месяц все ошибки пропадают. С Яндексом же есть тонкость, и заключается в следующем – после простановки редиректов можно ждать пропадания ошибок из панели вечно, я ждал однажды полгода, пока не написал в поддержку, где мне сообщили, что помимо редиректа необходимо дополнительно закрыть проблемные страницы в robots.txt и только тогда они пропадут из панели вебмастера.

Вообще рекомендую прочитать официальные мануалы от поисковиков по теме: Переадресация 301 от Google и Обработка перенаправлений (редиректов) от Яндекс.


Permanent Redirect 301 через .htaccess

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

У вас на сервере (в корне, там где главный index.php) уже наверняка есть файл .htaccess. Если этот файл не видно:

  • Проверьте настройки ftp-менеджера, он может скрывать системыне файлы, коим и является файл htaccess
  • Зайдите в файловый менеджер через панель управления хостера и проверьте права для файла. Я имею ввиду не CHMOD, а группу и пользователя, например, там может стоять пользователь root, а вы подключаетесь через ftp используя доступ пользователя владельца домена.
  • Банально файла может не быть :) Тогда его следует создать, но под windows иногда возникает проблема, т.к. по сути файл .htaccess видится системой как файл без имени и только с расширением. Предлагаю простой способ – создаем обычный txt-файл, добавляем в него строку «RewriteEngine On» (без кавычек), загружаем txt-файл на сервер, на сервере переименовываем файл в .htaccess

Большинство правок, связанных с редиректом следует писать в самом начале файла после строки «RewriteEngine On», чтобы эти правила обрабатывались в первую очередь. Важно соблюдать последовательность действий, т.к. команды обрабатывается сервером построчно с самого начала и до первого вхождения. Иначе говоря, надо всегда начинать с частной и заканчивать более общей выборкой.

Давайте рассмотрим несколько самых распространенных и полезных примеров:

301 редирект для домена с www.site.ru на site.ru

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

301 редирект для домена с site.ru на www.site.ru

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

Вышеописанные варианты редиректа отлично работают и не требуют никаких правок с вашей стороны — только вставить в .htaccess файл. Однако для 100% надежности я бы посоветовал вам другой вариант:

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

Либо

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

Первый для тех, у кого основной домен с www, второй – у кого без www. Соответственно в обоих примерах надо вместо «site» вписать название вашего домена.
Итак, чем же данные варианты лучше? Очень просто, они проверяют не только отсутствие/наличие www в имени домена, но проверяют и имя домена на полное его соответствие.
Живой пример: Наверняка вы сталкивались с тем, что неожиданно сайт может проиндексироваться по служебному адресу на хостинге (такой адрес выдается, чтобы к сайту можно было обратиться до привязки вашего реального домена), какому-нибудь зеркалу или вообще ip-адресу! Так вот универсальные правила будут лишь верифицировать отсутствие/наличие www, при этом все равно, к какому домену обращается пользователь или поисковый робот.
Так вот воспользовавшись продвинутым вариантом, вы на 146% будете уверены, что ваш сайт будет доступен только и исключительно по указному лично вами доменному имени и с учетом www. Я пользуюсь только таким вариантом и вам рекомендую!


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

В свете массового перехода сайтов на защищенный протокол, необходимо знать, как сделать редирект с http на https. Кстати, если вы еще не выбрали SSL-сертификат, вам стоит прочитать мой пост про SSL сертификат для сайта — для чего он нужен и где его взять.

Ниже я предлагаю вам несколько вариантов 301 редиректа с протокола http на https, которые могут работать либо не работать в зависимости от конфигурации именно вашего сервера, но какое-то из правил вам точно подойдет:

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L] #site.ru надо заменить на ваш домен
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

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

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

Редирект с протокола https на http (честно, не знаю, зачем вам может это понадобиться):

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

Недавно я написал очень подробную инструкцию как правильно перевести сайт с HTTP на HTTPS без потерь. Если вы планируете переезд с https на https, вы обязаны ее прочитать!


Внесу некоторую ясность в непонятную абракадабру:

  • RewriteCond обозначаем условие, при совпадении с которым будет выполнено правило RewriteRule. С помощью регулярных выражений задаются шаблоны строк.
  • Переменные сервера:
    • %{REQUEST_URI} — часть урла без доменного имени и GET-параметров, например, для страницы, которую вы сейчас читаете: blog/post/4393,
    • %{HTTP_HOST} — хост или доменное имя, например: alaev.info
    • %{QUERY_STRING} — строка с набором GET параметров, то есть часть урла после знака вопроса (и до решётки якоря, если он есть).
    • %{REQUEST_FILENAME} — полный путь в файловой системе сервера к файлу или скрипту соответствующим этому запросу. Чтобы было понятно, адрес скрипта, как нам это привычно такой — alaev.info/index.php, а вот в файловой системе сервера это страшная строка /var/www/alaev_info/data/www/alaev.info/index.php.
      Бывает, делая редирект, вы получаете неожиданный результат, например, хотели в адресе http://site.ru/page-name?post=17434801_4060 убрать параметры post=17434801_4060, указали соответствующие правила (о них ниже будет написано), а в итоге получили строку http://site.ru/usr/local/www/site.ru/www/page-name — от параметров избавились, но получили странный адрес. Это все потому, что вы не указали в начале файла после RewriteEngine On директиву RewriteBase /, которая устанавливает конкретный, базовый URL для преобразований в контексте каталога.
  • Метасимволы используются для задания групп символов или «меток» в шаблоне:
    • ^ — метка начала строки,
    • $ — метка конца строки,
    • ! – отрицание,
    •  — экранирующий слеш, позволяет считать следующий за ним метасимвол обычным символом,
    • . – точка, обозначает любой символ, но только один,
    • () – группировка.
  • Модификаторы ставятся после обычных символов, метасимволов или их групп и расширяют возможности использования шаблонов:
    • ? — символ повторяется 0 или 1 раз,
    • * — Повторяется от 0 до 65536 раз,
    • + — Повторяется от 1 до 65536 раз.
  • Флаги определяют дополнительные опции для данного правила и перечисляются в квадратных скобках через запятую:
    • NC — (nocase) отключает проверку регистра символов.
    • R — (redirect) останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на данную страницу (302, MOVED TEMPORARY). С данным флагом можно указать другой код результата, например R=301 возвратит редирект с кодом 301 (MOVED PERMANENTLY). Как вы понимаете, это то самое, что нам и надо.
    • L — (last) останавливает процесс преобразования, и текущая ссылка считается окончательной.

Самый популярный случай — 301-редирект с index.php (html) на главную страницу. На 90% сайтов встречается проблема дублирования главной страницы по адресам http://site.ru и http://site.ru/index.php (или index.html, index.htm или любой другой вариант, не принципиально, а то и все сразу). Где-то это явно, когда, например, ссылка из логотипа ведет на site.ru, а ссылка в меню ведет на site.ru/index.php, где-то не явно, когда дубль находится при вводе адреса с index.php вручную. Важно просто решить проблему. И я предлагаю универсальный вариант, вот он:

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

Просто вставьте этот код без изменений после строки после строки «RewriteEngine On» и нет проблем!

Многие, кто начинает бороться с дублями на сайте, задаются вопросом, а откуда берутся такие вот ссылки, которые дублируют основную страницу http://site.ru/page-name.html&post=-1234567_8901? Откуда взялась приставка &post=-1234567_8901 – это «добро» берется из вконтакте, когда кто-то делится ссылкой на ваш сайт у себя на стене, в группе или паблике, то автоматически добавляется подобная строка, видимо, для отслеживания какой-то статистики.

Чтобы избавиться от этой ерунды раз и навсегда необходимо добавить в htaccess:

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

Чтобы вам был понятен принцип, я приведу еще один пример, его как раз предложили решить в комментариях. Иногда вы можете обнаружить у себя вот такие ссылки:
http://site.ru/&sa=U&ei=AsguT72dLdHLtAaZ0tyVDQ&ved=0CCwQFjAIOFo&usg=AFQjCNFwbE9i0bqrQUGJLoDh6xyVd1nhxg
Что печально — эти ссылки индексируются Гуглом и попадают в выдачу.

Но не об этом речь, я просто хочу, чтобы вы поняли механизм 301-редиректа в подобных случаях, а не задавали мне вопросы в коментариях по каждому случаю. А решение будет таким:

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

Как видите, никакой разницы между этим и предыдущим случаем нет, пусть у вас в url’е будет &post= или &sa= или что угодно — решение одинаковое, просто надо заменить очевидные части кода. Понятно же, правда?

Избавляемся от параметров или меток в адресе

Вопрос задавался и в комментариях и много раз на форуме, потому нельзя его обойти стороной. Что делать вот с такими дублями: http://site.ru/?abrakadabra или более реальный случай http://site.ru?utm_source=twitterfeed&utm_medium=twitter

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

RewriteCond %{QUERY_STRING} ^utm_source= [NC]
RewriteRule (.*) $1? [R=301,L]

Как вы понимаете, значение «utm_source=» можно заменить на вашу «abrakadabra» и так жу будет происходить 301-редирект на адрес без всякой абракадабры.

Пример избавления от параметров скрипта в url страницы

Пусть мы хотим в адресе http://site.ru/index.php?lang=ru избавиться от параметра lang=ru так, чтобы на выходе получить http://site.ru/index.php.

В .htaccess необходимо прописать такие строки:

RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*).php?(.*)$ $1.php [R=301,NC,L]

%{QUERY_STRING} — это строка с набором переменных для PHP, часть урла после знака вопроса (и до решётки якоря, если он есть).

Вызываем url — http://site.ru/index.php?lang=ru

RewriteCond %{QUERY_STRING} ^lang=ru$
Запрашиваемый url попадает под это правило, других правил нет, поэтому будет выполнен RewriteRule строкой ниже.
RewriteRule ^(.*).php?(.*)$ $1.php [R=301,NC,L]

Исходный url: http://site.ru/index.php?lang=ru
Шаблон разборки url’а: ^(.*).php?(.*)$
URL будет разобран по переменным: $1 = http://site.ru/index, $2 = lang=ru и собран обратно уже в виде http://site.ru/index.php ($1.php)
А далее будет 301 редирект на новый url.

Пример правил при смене структуры сайта

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

Вот такие строки мне пришлось добавить в htaccess файл, когда я сменил структуру своего блога.

Раньше у меня были адреса такие: https://alaev.info/post/4358 и https://alaev.info/post/category/seo, что как-то ломало логику в структуре – ведь блог это только часть сайта, но почему-то посты принадлежат сайту, а не блогу, а категории принадлежат постам, что тоже совсем нелогично. Я решил логику восстановить, и получилось: https://alaev.info/blog/post/4358 и https://alaev.info/blog/category/seo — теперь блог как отдельный раздел сайта, а посты принадлежат ему, и категории принадлежат блогу, а не постам.

Из этого же примера видно, что важно соблюдать последовательность правил. Если бы я поменял строки местами, то есть впереди бы шла строка RewriteRule ^post/(.*)$ blog/post/$1 [R=301,L] то редирект с адреса https://alaev.info/post/category/seo шел на страницу https://alaev.info/blog/post/category/seo а не как надо на https://alaev.info/blog/category/seo.

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

Например, вы решили исправить такую проблему, когда страница категории доступна по двум адресам http://site.ru/razdel/podrazdel/index.php и http://site.ru/razdel/podrazdel/. Второй url является правильным и основным, а url с index.php на конце является полным дублем, от которого необходимо избавиться.

Для того чтобы сделать редирект с index.php на категорию вы прописываете правило:

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

А в итоге при обращении к странице: http://site.ru/razdel/podrazdel/index.php
Редиректит на что-то подобное: http://site.ru/home/site.ru/public_html/razdel/podrazdel/

Т.е. почему-то выводит полный путь от корня сервера.

Для решения этой проблемы (и не только этой, кстати) необходимо, чтобы в начале .htaccess файла стояла не просто строка RewriteEngine On, но после нее шла еще одна, которая обрезает полный путь (от корня сервера) до корня сайта, вот так:

RewriteEngine On
RewriteBase /

301-редирект со страницы на страницу, на новый адрес

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

Redirect 301 /page-name1.html http://site.ru/page-name2.html
Redirect permanent /page-name1.html http://site.ru/page-name2.html
RedirectPermanent /page-name1.html http://site.ru/page-name2.html

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

На этом закончим с .htaccess и перейдем к PHP.


Permanent Redirect 301 с помощью PHP

Обычно PHP редирект я использую, когда возникают трудности с .htaccess или оказывается так, что функция на php оказывается более логичной и понятной.

Сам синтаксис 301 редиректа на php выглядит следующим образом:

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://site.ru");
die("Redirect");

Эти строки сообщают браузеру клиента, что с какой-то запрошенной страницы необходимо произвести перманентный редирект на адрес http://site.ru. При этом http://site.ru может являться не только адресом главной страницы текущего сайта, но может быть и любым другим сайтом. Если же что-то пошло не так и произошла ошибка, то в окне браузера мы увидим надпись «Redirect».

Чтобы было понятнее, приведу несколько примеров функций, которые я написал для своего блога alaev.info, пытаясь решить определенные задачи.

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

	if (strpos($_SERVER['REQUEST_URI'], 'http://alaev.info') !== false) {
		$real_page_url = "http://alaev.info".str_replace ( "/http://alaev.info", "", $_SERVER['REQUEST_URI'] );
		header("HTTP/1.1 301 Moved Permanently");
		header("Location: $real_page_url");
		die("Redirect");
	}

Однажды у меня возникла проблема, что в панели вебмастера вылезла куча 404 ошибок, адреса этих страниц были вида https://alaev.info/https://alaev.info/post/4358, т.е. откуда-то в адресе появился дублирующий адрес сайта. И тогда я написал функцию, которая проверяет, есть ли в URI (заметьте, не URL, а URI) вхождение «http://alaev.info», и если присутствует, то вырезаем из адреса этот кусок и записываем результат в переменную $real_page_url, а потом делаем 301-редирект на верный адрес из переменной.

Функция, убирающая конечный слеш из url

if ( ( $_SERVER['REQUEST_URI'], - 1, 1 ) == '/' ) {
	$requested_url = rtrim($requested_url, '/');
 
	header("HTTP/1.0 301 Moved Permanently");
	header("Location: $requested_url");
	die("Redirect");
}

Вот такая вот простейшая функция, которая смотрит, есть ли в запрошенном адерсе страницы слеш на конце, и если он есть, то слеш обрезается и происходит 301-редирет на адрес без слеша.


Существует еще масса вариантов, позволяющих отдавать команду перенаправления на разных языках программирования, типа ASP, Ruby on Rail и т.д., но я с этими языками не знаком, потому не буду тут умничать и пудрить вам мозги. Еще возможны редиректы при помощи метатега meta refresh, а так же редиректы на javascript – но это участь нечистых на руку дорвейщиков, а поисковики эти редиректы не понимают, они получаю ответ от сервера 200 OK. Так что эти варианты мы не рассматриваем.


Permanent Redirect 301 для сервера nginx

Помните я писал про зеркало моего сайта, доступного по ip? В итоге проблему решили редиректом, прописанным в конфигурационном файле сервера, обычно он расположен тут /etc/nginx/nginx.conf. Там прописали вот такие строки:

server {
listen 1.2.34.123:80 default;
server_name _;
rewrite ^/(.*)$ http://site.ru/$1 permanent;
}

Здесь говорится о том, что если идет обращение в ip-адресу через 80-ый порт, то необходимо делать permanent redirect на site.ru.

Однако техподдержка не рекомендовала мне так поступать со словами: «Более корректно будет настроить HTTP-сервер таким образом, чтобы он просто закрывал соединение, если к нему обращаются по адресу, который не указан явным образом в конфигурации HTTP-сервера, это наиболее надёжный, простой, безопасный и наименее требовательный к ресурсам сервера вариант. Через некоторое время страницы, которые будут недоступны, скорее всего, будут выкинуты из индекса поисковых систем.»

Следующий совет был такой: «Когда потребуется просто закрывать соединение вместо перенаправления, то укажите вместо строки ‘rewrite ^/(.*)$ http://site.ru/$1 permanent;’ такую строку ‘return 444;’. Затем выполните: ‘invoke-rc.d nginx reload’».

Вдруг это кому поможет.

Примеры редиректов в самых распространенных случаях

Редирект для домена www.site.ru на site.ru

server {
	listen 80;
	server_name www.site.ru;
	rewrite ^ http://site.ru$request_uri? permanent;
}

Редирект для домена с site.ru на www.site.ru

server {
	listen 80;
	server_name site.ru;
	rewrite ^ http://www.site.ru$request_uri? permanent;
}

Редирект с адреса http://site.ru/index.php на http://site.ru/

location = /index.php {
	if ($request_uri = /index.php) {
		rewrite ^ 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;
}

Вот как-то так. Я в настройках конфигов для nginx не силен, всегда обхожусь настройками апача, так что, если у вас появились какие-то вопросы по nginx, то я вряд ли смогу вам помочь…


Как проверить HTTP заголовки и статусы ответа сервера

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

Дополнение HttpFox для Firefox

HttpFox (вот ссылка на аддон) — это мой любимый инструмент отслеживания http-заголовков. HttpFox построчно показывает ход загрузки страницы, что позволяет отслеживать, например, цепочки редиректов и вообще порядок и скорость загрузки страницы. Если вы пользуетесь Мозиллой, то однозначно рекомендую.

Расширение HTTP Headers для Chrome

Сам я не пользуюсь расширением HTTP Headers (вот ссылка на него), но интернеты мне посоветовали обратить внимание именно на него. Если у вас есть варианты получше, пожалуйста, отпишитесь в комментариях.


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

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

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

Если вы не хотите тратить время на самостоятельную настройку редиректа — оставьте заявку, и специалисты RU-CENTER сделают это за вас. 

Что такое редирект и когда он нужен

Редирект — это перенаправление пользователя с одного URL на другой. Это нужно, чтобы человек не потерял вас, если вы измените адрес сайта или страницы. Кликая на старую ссылку, пользователь незаметно для себя окажется по новому нужному адресу. Например, если вы перейдёте по ссылке http://nic.ru/, автоматически попадёте на сайт с безопасным профилем https://nic.ru/. 

Неактуальный сайт или страницу программисты называют донором, а ту, на которую перенаправляют, — акцептором. В нашем случае http://nic.ru/ — сайт-донор, а https://nic.ru/ — сайт-акцептор.

В каких случаях нужен редирект

  • Для адаптации. Самый популярный редирект — перенаправление пользователя с десктопной версии сайта на мобильную.
  • При ренейминге. В случаях, когда вы изменили название бренда и перешли на сайт с новым доменным именем.
  • При переходе на безопасный протокол соединения. Чтобы обезопасить себя и своих клиентов, меняете протокол http на https.
  • Для перенаправления с неактуальных страниц/сайтов. Например, товара больше нет в продаже или вы больше не оказываете какую-то услугу и хотите перенаправить пользователя на страницу с похожим товаром или услугой.
  • При сайтах или страницах-дублях. Схожий контент на нескольких ресурсах ухудшает ранжирование, а если сайты или страницы идентичны, поисковые системы вовсе исключат эти страницы из поиска. Чтобы не создавать дубли и не рисковать ранжированием, настраивают постоянный или временный редирект.
  • При частых запросах с www, если ваш сайт без www. На вас могут сослаться и так, и так, но для поисковых систем это разные сайты, поэтому настраиваете редирект на один из вариантов.
  • При переходе на новый движок сайта. У каждой CMS свои правила генерации URL. Если адрес не будет совпадать со старым, без редиректа не обойтись — иначе клиенты не смогут вас найти. 

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

Какие бывают редиректы

Есть четыре основных вида редиректа — 301, 302, 303, 307. Поисковые системы сами определяют его по коду состояния http. 

301 — постоянный редирект

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

302 — временный редирект со статусом «Найдено»

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

303 и 307 — аналоги 302 редиректа

303 редирект обозначает «смотрите другой ресурс», его применяют, когда вы не перенесли контент на другой адрес, но у вас есть подходящий под перенаправление другой сайт или страница. Для этого редиректа браузер использует метод GET.

Статус 307 редиректа — временное перенаправление. То есть запрашиваемая страница в данный момент находится по другому адресу. В отличие от 302 изначальная версия ресурса сохранит свои позиции.

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

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

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

Для работы в .htaccess нужно установить FTP-клиент (например, filezilla.ru или totalcommander.ru) и уметь работать с кодом, поэтому такой способ сложнее. Обычно его выбирают, когда нужно перенести домен и сделать это бесплатно. Более лёгкий способ — купить доступ к сервису. Тогда знания кода не нужны. 

Если нужно сделать перенаправление со страницы, подойдёт более простой вариант переноса — через админку сайта.

В этой статье рассмотрим эти способы на примере самых распространённых причин для редиректа. 

Перенос сайта с одного домена на другой

Этот тип перенаправления можно сделать с помощью FTP-клиента. Этот вариант подойдёт тем, кто умеет работать с кодом или готов этому научиться. 

Если язык программирования не для вас, перенести домен можно без знаний кода. У RU-CENTER есть специальный сервис «Перенаправление домена».

Перенос с помощью FTP-клиента

Откройте FTP-клиент и найдите файл .htaccess в корневом каталоге вашего сайта. Уточнить путь к корневому каталогу вы можете у вашего хостинг-провайдера. Если в корневом каталоге сайта нет файла .htaccess, создайте новый файл с таким именем (точка в начале имени обязательна). 

Чтобы изменить файл, нажмите на него правой кнопкой мыши и кликните «Редактировать» (в используемом вами FTP-клиенте может быть другой способ начала редактирования файла, но обычно названия пунктов меню очень похожи). Он автоматически загрузится к вам на компьютер и откроется в редакторе. 

Мы не рекомендуем использовать для редактирования .htaccess редакторы, встроенные в ОС Windows, в частности, «Блокнот». Если в файле содержатся кириллические символы и вы будете сохранять файл в кодировке UTF-8, такие редакторы могут автоматически добавлять в начало файла byte-order-marker (BOM), который может некорректно интерпретироваться веб-сервером. Для редактирования .htaccess лучше использовать специализированные редакторы, например, Notepad++. 

Дальше находим в файле .htaccess элемент кода: 

RewriteEngine On

RewriteBase /

Если такой записи нет, вставляем её сами в конец файла. Сразу после неё вставляем код с нужным условием:

RewriteCond %{HTTP_HOST} ^old-site.ru$ [NC]

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

где old-site.ru — сайт-донор, а http://www.site.ru — сайт-акцептор. 

Важно: В имени домена дефисы и точки необходимо экранировать, добавляя перед ними символ «». Если речь идёт о домене, например, с кириллическими символами, то его нужно указывать в виде Punycode (xn--…), также включая символ «».

Как только вы сохраните файл в редакторе, FTP-клиент напомнит вам загрузить обновлённый .htaccess обратно. Просто нажмите на кнопку «Да», и клиент загрузит файл автоматически.

Напоминание загрузить обновлённый .htaccess в FTP-клиенте FileZilla

Перенос с помощью сервиса «Перенаправление домена»

Если настройка через FTP-клиента кажется вам сложной, можно выбрать вариант проще — приобрести доступ к сервису «Перенаправление домена» у RU-CENTER. Чтобы в нём работать, не нужно разбираться в коде. Сможете сделать редирект для домена, всех его поддоменов, а также настроить до десяти индивидуальных правил перенаправления для конкретных поддоменов. 

Организация перенаправления на безопасный протокол HTTPS

Ещё один популярный вариант редиректа — перенос сайта на безопасный протокол соединения с http на https. Мы расскажем об одном способе настройки этого вида редиректа, он подходит для хостинга RU-CENTER. Но, алгоритм обеспечения работы по HTTPS может отличаться на разных хостингах, поэтому точный способ такого перенаправления стоит уточнить у вашего хостинг-провайдера.  

Откройте FTP-клиент и найдите файл .htaccess в корневом каталоге сайта (уточнить имя корневого каталога вы можете у вашего хостинг-провайдера). Если файла с таким именем нет в корневом каталоге, создайте новый файл с именем .htaccess. 

Находим в файле .htaccess элемент кода: 

RewriteEngine On

RewriteBase /

Если такой записи нет, вставляем её сами в конец файла. Сразу после неё вставляем код с нужным условием:

RewriteCond %{ENV:HTTPS} !on

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

где https://domain.ru — ваш сайт.

Перенос сайта с домена без префикса www на домен с www 

Откройте FTP-клиент и найдите файл .htaccess в корневом каталоге сайта (уточнить имя корневого каталога вы можете у вашего хостинг-провайдера). Если файла с таким именем нет в корневом каталоге, создайте новый файл с именем .htaccess.

Находим в файле .htaccess элемент кода: 

RewriteEngine On

RewriteBase /

Если такой записи нет, вставляем её сами в конец файла. Сразу после неё вставляем код с нужным условием:

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

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

где site.ru — страница-донор, а http://www.site.ru — страница-акцептор.

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

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

Объясняем, как это сделать, на примере сайта на WordPress. 

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

Путь получается следующий: админка сайта → Инструменты → Перенаправления → Добавить новое.

Чтобы добавить перенаправление, заполните поля:

Исходный URL — в нём напишите относительный путь, то есть адрес страницы без указания домена, только то, что прописано после слеша. 

Параметры запроса — выберите из выпадающего списка нужное условие. В нашем случае — «Точное совпадение всех параметров в любом порядке». 

Целевой URL-адрес — полный адрес, куда вы планируете перенести контент.

Когда мы сохранили перенаправление, получился такой редирект:

где /baza-znanij/slovar — страница-донор,

https://domen.ru/content-hub — страница-акцептор.

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

  • Редиректы сохраняют качество ранжирования, а значит и обеспечивают трафик. Это легально: настройка перенаправлений не нарушает требования поисковых роботов.
  • Редиректы не ухудшают пользовательский опыт — на перенаправление пользователя с одного адреса на другой уходит меньше секунды.
  • Редиректы полезны для SEO-оптимизации. Сайты с одинаковым контентом хуже ранжируются, а редиректы помогают сосредоточить трафик на одном ресурсе и не потерять позиции в поиске.

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

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

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

Что такое редиректы и зачем они нужны

Редирект — перенаправление пользователя с одного URL на другой. Например, при переходе по ссылке http://texterra.ru/blog/ браузер автоматически перенаправляет пользователя на URL https://texterra.ru/blog/.

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

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

Вот примеры использования редиректов:

  • Перенаправление с http на https. Пример указан выше.
  • Перенаправление с URL с www на URL без www и наоборот. При переходе по ссылке https://tinkoff.ru браузер перенаправляет пользователя на https://www.tinkoff.ru. При переходе по ссылке https://www.vc.ru браузер перенаправляет посетителя на https://vc.ru/.
  • Переезд сайта на другой домен. Пару лет назад коллеги из популярного издания отказались от названия «Цукерберг позвонит» и настроили редирект с адреса http://siliconrus.com на https://vc.ru/.
  • Перенаправление трафика с одной страницы сайта на другую. Например, если в интернет-магазине нет какого-то товара, он может перенаправить трафик на страницу похожего продукта.
  • Перенаправление пользователей на мобильную версию сайта. Если владелец ресурса использует для адаптации к мобильному трафику только мобильную версию сайта, он настраивает редирект мобильных пользователей с www.example.au на www.m.example.au.

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

Продвинем ваш бизнес

В Google и «Яндексе», соцсетях, рассылках, на видеоплатформах, у блогеров

Подробнее

Продвинем ваш бизнес

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

Для пользователя все редиректы одинаковы: при попытке перейти по одному URL они попадают на другой URL. Обычно интернет-серферы даже не замечают, что браузер перенаправил их с одного адреса на другой.

Браузеры и роботы поисковых систем определяют вид редиректа по коду состояния HTTP. Перенаправления могут иметь разный HTTP-статус: 301, 302, 303, 307. Рассмотрим каждый подробнее.

SMM-специалист от TexTerra

Редирект 301

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

301 Moved Permanently: ищите хозяев по новому адресу

301 Moved Permanently: ищите хозяев по новому адресу

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

Редирект 302

В HTTP 1.0 статус 302 использовался для обозначения временного перемещения запрошенного ресурса на новый адрес. В HTTP 1.1 редирект 302 обозначает статус «Найдено» или Found. То есть ресурс существует, но владелец на некоторое время переместил его на новый адрес. Редирект 302 не передает авторитет и ссылочный профиль донора акцептору.

В HTTP 1.1 для временного перенаправления предложены редиректы 303 и 307. Это связано с некорректной обработкой статуса 302 в некоторых браузерах.

По стандартам HTTP 1.0 браузер после получения ответа 302 должен использовать для нового запроса метод POST. Разработчики некоторых браузеров не соблюдают этот стандарт и используют для нового запроса метод GET. В HTTP 1.1. эту проблему решают редиректы 303 и 307.

Вместо 302 для временного перенаправления лучше использовать редиректы 303 и 307.

Редиректы 303 и 307

В HTTP 1.1 статус 303 предложен вместо редиректа 302. Значение кода – See Other или «Смотрите другой ресурс». Для нового запроса браузер должен использовать метод GET. Применяйте редирект 303, когда у вас нет адекватного ответа на запрос пользователя, но имеется более или менее подходящая замена.

Редирект 303 подходит, когда на целевой странице есть формы. В этом случае важно, чтобы браузер делал запрос безопасным методом GET.

Статус 307 также используется вместо редиректа 302. Значение кода – Temporary Redirect или «временное перенаправление». Браузер не должен менять метод нового запроса. Запросы безопасными методами GET и HEAD выполняются автоматически. Запросы небезопасными методами, например, POST, выполняются с подтверждением пользователя.

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

Промежуточный вывод: в большинстве случаев владельцам сайтов подходит редирект 301. В этом случае HTTP-статус уведомляет поисковых роботов, что документ навсегда перемещен на новый адрес. Этот вид редиректа передает авторитет и ссылочную массу со страницы-донора на страницу-акцептор. Редиректы 303 и 307 используются, когда владелец сайта хочет временно перенаправлять пользователей с одного документа на другой.

96 причин не хоронить SEO – чек-лист по оптимизации сайта

96 причин не хоронить SEO – чек-лист по оптимизации сайта

Какие типы редиректов бывают

Редиректы классифицируются по способу реализации. Настроить перенаправление можно через файл .htaccess или nginx.config, средствами PHP, HTML, JavaScript. Подробнее о каждом типе ниже.

Что такое htaccess-редирект

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

Чтобы настроить перенаправление, внесите изменения в файл .htaccess. Для доступа к файлу воспользуйтесь FTP-клиентом, например, FileZilla. В настройках программы в меню «Сервер» включите принудительное отображение скрытых файлов. Файл .htaccess находится в папке с названием доменного имени ресурса в каталоге public_html.

Ищем файл .htaccess

Ищем файл .htaccess

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

Отредактированный файл нужно загрузит на сервер

Отредактированный файл нужно загрузит на сервер

В интерфейсе FTP-клиента FileZilla слева доступны файлы и папки локального компьютера, а справа — файлы и папки удаленного сервера.

Справа сервер, слева локальный компьютер

Справа сервер, слева локальный компьютер

Также доступ к файлу .htaccess можно получить через панель управления хостингом. В cPanel откройте раздел интерфейса «Файлы – Диспетчер файлов».

Открываем диспетчер файлов панели управления хостингом cPanel

Открываем диспетчер файлов панели управления хостингом cPanel

В настройках диспетчера включите отображение скрытых файлов.

Включаем отображение скрытых файлов

Включаем отображение скрытых файлов

Скачайте файл на компьютер и отредактируйте. Также файл можно редактировать через cPanel.

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

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

Чтобы отредактировать файл .htaccess, откройте его в блокноте. Добавьте код редиректа. Сохраните изменения и загрузите файл на сервер.

Добавляем в файл .htaccess код редиректа с http на https

Добавляем в файл .htaccess код редиректа с http на https

О коде редиректов и настройках конкретных перенаправлений пойдет речь ниже.

Чтобы настроить редирект на сервере под управлением Nginx, нужно добавить код перенаправления в конфигурационный файл nginx.conf. Код добавляется в блоке server. Получить код редиректа можно с помощью конвертера.

PHP-редиректы

PHP-редирект работает на уровне сервера. Этот способ перенаправления считается менее предпочтительным по сравнению с редиректом через файл .htaccess, так как он работает медленнее. Но в некоторых случаях предпочтительнее использовать этот тип редиректа.

Например, если на сайте есть десятки страниц, для которых нужно прописать редирект, а также десятки страниц, для которых редирект не нужен, лучше настраивать перенаправления с помощью PHP.

Скачайте на жесткий диск файл index.php или откройте его для редактирования в диспетчере файлов панели управления хостингом. Файл находится в корневой папке сайта. Там же находится файл .htaccess.

Находим файл index.php и загружаем его на жесткий диск

Находим файл index.php и загружаем его на жесткий диск

Добавьте в файл index.php код редиректа. Сохраните изменения и загрузите файл на сервер.

Добавляем код перенаправления в файл index.php

Добавляем код перенаправления в файл index.php

JavaScript-редирект

Редирект с помощью кода JavaScript выполняется на стороне браузера, а не на стороне сервера. Чтобы посетитель попал со старой страницы на новую, скрипт редиректа должен полностью загрузиться в обозревателе. Поэтому JavaScript-редирект – более медленный способ перенаправления, чем серверные редиректы. Еще одна проблема — автоматическое перенаправление не сработает, если пользователь отключил в браузере JavaScript.

Тем не менее JavaScript-редиректы в некоторых случаях удобны. Например, их можно использовать для перенаправления с задержкой. Вы можете написать на старой странице сообщение вроде «Мы переехали на новый сайт, сейчас вы будете автоматически туда перенаправлены». Через несколько секунд пользователь автоматически попадет на новую страницу.

Чтобы реализовать перенаправление с помощью JavaScript, добавьте код редиректа между тегами <head> и </head> страницы, с которой нужно перенаправить пользователей. На сайтах под управлением WordPress это можно сделать с помощью бесплатного плагина Per page add to head.

Настраиваем редирект на главную с задержкой 1,5 секунды

Настраиваем редирект на главную с задержкой 1,5 секунды

Сохраните изменения на странице и проверьте, как работает редирект.

Браузер перенаправляет пользователя с внутренней на главную страницу с задержкой 1,5 секунды

Браузер перенаправляет пользователя с внутренней на главную страницу с задержкой 1,5 секунды

HTML-редирект

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

Чтобы реализовать редирект, добавьте код между тегами <head> и </head> страницы, с которой хотите перенаправить трафик.

Добавляем код редиректа в хедер страницы

Добавляем код редиректа в хедер страницы

Сохраните изменения и проверьте, как работает перенаправление.

Промежуточный итог: предпочитайте серверные редиректы, так как они удобнее для пользователей. В большинстве случаев перенаправление лучше настраивать через конфигурационный файл .htaccess для серверов на Apache и nginx.config для серверов на Nginx.

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

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

Где взять код редиректа

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

  • 301 Redirect Code Generator. Генерирует код редиректа для Apache, ASP и ASP.NET. Также создает код JavaScript и HTML-перенаправлений.
  • Seomagnifier. Создает код редиректа 301 с домена с www на домен без www и наоборот.
  • 301 Redirect Code Generator Tool. Создает редиректы со страницы на страницу, а также с домена без www на домен с www. Генерирует PHP-код, перенаправления для серверов на ASP и ASP.NET, HTML- и JavaScript-перенаправления.
  • Генератор файла .htaccess. Создает код редиректов со страницы на страницу, а также между разделами сайта, генерирует скрипты перенаправлений с домена с www на домен без www.
  • Универсальный генератор кода перенаправлений для .htaccess. Можно выбрать сценарий редиректа, указать URL и сгенерировать код.
  • Генератор редиректов 301. Создает код перенаправлений для серверов на Apache, ASP, ASP.NET, а также код HTML- и JavaScript-редиректов.
  • Генератор перенаправлений от Brontobytes. Поможет настроить редирект со старого домена на новый, изменить адрес отдельных страниц и разделов ресурса, настроить перенаправление с домена без www на домен с www.
  • Пользователям серверов на Nginx будет полезен конвертер кода. Он трансформирует редиректы для .htaccess в перенаправления для nginx.config.

По данным британской компании Netcraft на ноябрь 2017 года, 44 % активных сайтов работают на серверах под управлением Apache. 21 % ресурсов работает на серверах под управлением Nginx. Доля серверов с другим ПО не превышает 8 %.

Как делать редиректы: популярные примеры

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

Как сделать редирект с http на https

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

  1. Скачайте конфигурационный файл на жесткий диск или откройте его для редактирования в панели управления хостингом.
  2. Сгенерируйте код редиректа с помощью одного из предложенных выше сервисов.
  3. Добавьте код в файл, сохраните изменения и загрузите .htaccess на сервер.

Добавляем код редиректа с http на https в файл .htaccess

Добавляем код редиректа с http на https в файл .htaccess

Корректно перевести сайт на безопасный протокол помогут следующие ресурсы:

  • Рассказ нашего маркетолога Тимура Фехрайдинова об опыте и особенностях перевода на безопасный протокол сайта «Текстерры».
  • Техническая инструкция по переводу на https сайта на WordPress, включая тактику работы с Google Search Console и «Яндекс.Вебмастер».
  • Плагин для WP Really Simple SSL. За минуту решает все технические задачи, связанные с установкой SSL-сертификата и переводом сайта на безопасный протокол.

Я работаю с такими настройками Really Simple SSL

Я работаю с такими настройками Really Simple SSL

Как сделать редирект с или на www

Подробную инструкцию по перенаправлению с домена без www на домен без www через файл .htaccess читайте в статье о зеркалах сайтов. Если хотите, выполните этот же редирект с помощью php. Действуйте так:

  1. Загрузите на жесткий диск файл index.php.
  2. Сгенерируйте код редиректа.
  3. Вставьте код в файл, сохраните изменения и загрузите index.php на сервер.
  4. Укажите основной URL в настройках сайта. В WordPress это можно сделать в меню «Настройки – Общие».

Добавляем код редиректа в файл index.php

Добавляем код редиректа в файл index.php

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

Проверьте, как работает перенаправление. На иллюстрации ниже видно, что до настройки редиректа сайт был доступен по двум URL. После изменения файла index.php ресурс доступен по одному адресу.

После настройки php-редиректа сайт доступен только по URL без www

После настройки php-редиректа сайт доступен только по URL без www

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

Чтобы настроить редирект с одной страницы на другую, отредактируйте файл .htaccess или index.php: добавьте в него сгенерированный код редиректа. Если сайт работает на WordPress, воспользуйтесь для настройки редиректов плагинами:

  • Simple 301 Redirects. О настройках читайте в статье про зеркало сайтов.
  • Redirection. Инструкция по настройке смотрите в нашей статье «Лайфхаки для пользователей WordPress».
  • Redirect. Добавляет блок настройки редиректов на страницу редактирования публикаций.

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

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

Перенаправления можно настраивать через панель управления сервером. В cPanel настройки доступны в разделе «Домены – Перенаправления». Инструкцию смотрите в статье о зеркалах сайтов.

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

При переезде на новый домен перенаправление настраивается так же, как редиректы с http на https или с домена с www на домен без www. Изменения можно внести через файл .htaccess или index.php.

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

Генерируем код постраничного редиректа

Генерируем код постраничного редиректа

Добавьте код в файл .htaccess и сохраните изменения.

После загрузки файла на сервер заработает переадресация

После загрузки файла на сервер заработает переадресация

Как сделать редирект папки

Редирект папки (каталога, директории) можно настроить с помощью файлов .htaccess или index.php. Настройка перенаправлений может понадобиться, если в URL страниц отображаются названия директорий.

Например, в блоге о книгах URL может выглядеть так: https://exampleblog.ru/klassica/idiot. Автор создает отдельный каталог для русской классики и хочет, чтобы URL выглядел так: https://exampleblog.ru/russkaya-klassica/idiot. В .htaccess нужно добавить такой код:

RedirectMatch 301 ^/klassica/(.*)$ /russkaya-klassica/$1

Частные случаи: редирект слэша и редирект расширения

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

Сгенерируйте код редиректа и добавьте его в файл .htaccess. Убедитесь, что отметили галочкой нужную опцию.

Получаем код редиректа на страницу со слэшем

Получаем код редиректа на страницу со слэшем

Чтобы настроить перенаправления с адреса с расширением на адрес без расширения, сгенерируйте код и добавьте его в конфигурационный файл. Редирект с URL с расширением .html на URL с расширением .php выглядит так:

RewriteEngine on

RewriteRule index.html index.php [NC,R]

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

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

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

  • Чекер PrCy.
  • Redirect Checker.
  • Redirect Check.

Чекеры показывают вид редиректа и статус ответа сервера при переходе на новый адрес.

Проверяем статус редиректа

Проверяем статус редиректа

Сделать редирект просто

Для этого в первую очередь выберите вид редиректа. В большинстве случаев подходит перенаправление 301 или постоянный редирект. Иногда для временного перенаправления стоит использовать редирект 303 и 307.

Затем выберите тип редиректа. Быстрее всего работают серверные редиректы, которые настраиваются с помощью конфигурационных файлов .htaccess для серверов Apache и nginx.config для серверов Nginx. Также можно настроить PHP-редирект с помощью файла index.php. JavaScript- и HTML-редиректы работают медленнее, поэтому используйте их в исключительных случаях.

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

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить редакцию вин 10
  • Как изменить редакцию windows vista
  • Как изменить редакцию windows server 2008 r2
  • Как изменить редакцию windows 10 через kms
  • Как изменить редактор реестра

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии