24 772
7
Время чтения ≈ 19 минут
Как сделать 301 редирект

Содержание:

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

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

Что такое редирект 301

Редирект — это процесс, при котором пользователь перенаправляется с неактуальной страницы на актуальную. Это может быть 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.

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

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

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

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

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

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

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

Можно также установить специальные браузерные расширения для 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]
Подписаться
Уведомление о
guest
7 комментариев
Inline Feedbacks
View all comments
AleksKovv

От души 💪🏻

Сергей

Привет! Как владелец сайта знаю, что комментарии оставляют ооочень малый процент пользователей страниц, очень редко… по этому решил оставить свой!
Искал 301 ридерект как правильно делать постраничную склейку в файле .htaccess — нашел здесь, проверил — работает!
Странно что в топе, большинство сайтов не имеет ответа на мой поисковый запрос (через гугл искал).
Спасибо большое!
Удачи в развитии!

Алекс

Ребята у вас косичек тут
Редирект с https на httpЕсли необходимо сделать 301 редирект всего сайта с https на http, в файл прописывается следующее:

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

gorj

как быть, если в админке несколько сайтов, а редирект на httpS нужен только для одного единственного

Надежный хостинг для сайта. 14 дней - бесплатно!