У владельцев сайтов, разработчиков, оптимизаторов регулярно возникает необходимость задать автоматический переход с одной страницы на другую. Допустим, вы склеили зеркала или купили новое доменное имя и переносите на него файлы и папки. Или пришлось перенести документ в другой раздел, и его URL изменился. А ведь трафик и позиции, которые были у старого адреса, терять не хочется! К счастью, расставаться с ними не придется, если освоите инструмент, о котором пойдет речь в сегодняшней статье.
Немного о термине
301 редирект – это перенаправление в htaccess файле или другими способами, при котором сервер на все запросы дает ответ, что сайт или документ переехал на другой URL, и переводит трафик туда. Обратите внимание: речь идет о постоянном перемещении. 301-й код ответа сервера сообщает поисковым роботам, что больше не надо заходить на прежний адрес, необходимо индексировать и ранжировать новый. Так трафик, позиции, посещаемость передаются туда, куда указывает маршрутизатор.
Также существует временное перемещение. Например, пока идет редизайн ресурса, контент переехал по какой-то причине, но вернется на старое место. Тогда код ответа сервера будет 302 или 303. По ним поисковые роботы понимают, что предыдущее местоположение еще заработает и не стоит исключать его из индекса.
Зачем нужна настройка редиректа 301
Она полезна как для SEO, так и для пользователей.
- помогает заменить в выдаче один адрес на другой без понижения позиций и трафика;
- позволяет улучшать структуру сайта без потери наработанных результатов продвижения;
- убирает дублирующие разделы и элементы, что положительно отражается на ранжировании;
- можно удалить страницу и показывать вместо не ответ 404, а похожий контент.
- легко перейти в нужный документ, даже если он был перемещен;
- не надо тратить время на переход по неработающим ссылкам.
Таким образом, инструмент актуализирует выдачу для пользователей и облегчает роботам поиск и удаление из индекса устаревших адресов.

Можно ли заменить redirect 301 htaccess на атрибут rel=»canonical»
Эти два параметра порой считают аналогами.
- Редирект сообщает поисковикам, что страница постоянно перемещена, и запрещает показывать старый адрес пользователям.
- Атрибут rel=»canonical» извещает краулеры, что существует несколько версий данного документа и просит добавить в индекс только ту, на которой он находится. Он не запрещает роботам обход и индексацию копий, а также их показ в выдаче, не передает позиции и трафик от донорского ресурса.
Поэтому менять одну настройку на другую не стоит. Применяйте их в разных условиях.
Настраивайте перенаправление:
- для перемещенных или удаленных страниц;
- при смене доменных имен, например, htaccess переадресация 301 на другой домен, с www и на адрес без www в том числе;
- вместо ресурсов с ответом сервера 404 и удаленного контента, если информация есть в другом месте.
- перенаправить не получается по техническим причинам или это займет очень много времени;
- требуется сохранить несколько вариантов публикации;
- URL динамически меняется для одного документа, например, при использовании фильтров;
- нужно переправить пользователя на одном ресурсе между адресами типа site.ru/section/index.php и site.ru/section/;
- существует мобильная и десктопная версия, и какая-то из них должна считаться основной.

Какой способ выбрать для настройки перенаправления
Метод подбирает оптимизатор или разработчик. Каждый использует то, что умеет, и учетом конфигурации конкретного проекта. Расскажем про самые распространенные виды.
301 редирект через htaccess на другой сайт или с одной страницы на другую
Это файл веб-сервера Apache, который задает дополнительные настройки конфигурации для ресурса. Он либо уже есть в структуре вашего проекта, либо его надо написать и загрузить. В нем можно переадресовать на доменное имя или постранично, склеить зеркала, исключить дубли.
Параметры документа влияют на каталог, в котором он расположен, и на дочерние. Если вы поместите его в корень, то действие распространится на весь сайт. Этот же эффект получится, если указания внести в файл httpd.conf – он по умолчанию действует во всех разделах.
Через Web.config
Аналогичный предыдущему вариант для веб-сервера IIS. Это XML-файл, который точно также помещают в корневом или целевых каталогах площадки. С ним можно как в htaccess настроить 301 редирект с одного домена на другой, с www на без www, получится убрать дублирующие элементы.
В PHP
Серверный язык программирования разрешает переадресовать посетителя, разместив соответствующий скрипт в index.php. Это полезно, если у вас нет возможности редактировать и загружать .htaccess/Web.config. Плюс обработка данных будет происходить на сервере, что снижает риск фильтрации со стороны поисковых систем.
С помощью JavaScript
В нем есть разные функции, через которые можно перенаправить трафик. Но есть заметные минусы:
- Метод не сработает, если пользователь отключил браузерную поддержку JavaScript.
- Он действует только пока страница-донор существует на ресурсе. Если вы ее удалите, придется перенаправлять посетителей заново другим способом.
- JavaScript сначала скачивает донорский документ. Время загрузки основного контента будет длиннее, чем с другими способами.
Через HTML
Соответствующий код просто добавляется на каждую страничку. В нем указан URL для перехода и его задержка в секундах. Само перемещение происходит на стороне клиента, а не сервера. Поэтому 301-ый код ответа не передается. Способ пригодится для небольших проектов: лендингов, визиток.
NGINX
Это прокси-почтовый и веб-сервер для операционной системы Unix и ее аналогов. Здесь есть несколько файлов конфигурации виртуальных доменов. В них следует дописать пересылающие команды. После этого требуется перезагрузка сервера.
Какие символы использовать для перенаправления
- \ – обратный слеш фиксирует знаки после себя в исходном виде;
- ^ – начало строки
- $ – конец строчки
- ! – отрицание
- . – любой символ
- ( ) – группировка
- # – метка для комментария
Как сделать редирект 301 htaccess
- Откройте на хостинге меню администратора сайта либо получите доступ через FTP-клиент.
- Поищите файл. Если он есть, сохраните копию – вдруг придется делать откат. Если нет, сформируйте в программе Блокнот или аналогичной.
- Запишите правило через раздел IfModule. Это позволит не вызвать ошибки в других задачах, которые выполняет файл. Ставите его последним, после прочих команд.
- Используйте директивы Redirect, RewriteCond, RewriteRule.
- Обозначьте, что это именно постоянное перемещение. Иначе сервер на свое усмотрение может использовать 302 и прочие начинающиеся на тройку ответы. Цифры можно прописать в правиле или после него в формате [R=301,L].
Пример для переноса каталога из old в new на ресурсе:
Редирект с одного домена на другой
Это достаточно распространенная ситуация при переезде проекта, его расширении или разделении. Покажем, через какие директивы это можно реализовать.
Redirect permanent / https://newdomen.ru/
Redirect 301 / https://newdomen.ru/
Файл с правилами должен находиться в корневом каталоге, чтобы они обрабатывали любой URL на ресурсе.
Учтите, что переадресация работает, пока вы оплачиваете старое доменное имя и держите на нем минимальную структуру. Как только все это не будет вам принадлежать и хостер очистит данные, перенаправлять посетителей станет невозможно. Рекомендуем отказываться от старого имени только когда статистика покажет, что трафик с него минимален.
Как поставить постраничный редирект 301 htaccess
Он требуется, например, когда необходимо переадресовать только часть страниц, а не все. Разумеется, прописывать директиву на каждой – крайне ресурсозатратный процесс. Гораздо эффективнее решить задачу через код в файле.
RewriteEngine On
RewriteCond %{HTTPS_HOST} ^olddomen\.ru
RewriteRule ^(.*)$ https://newdomen.ru /$1 [R=301,L]
RewriteCond %{HTTPS_HOST} ^www.olddomen\.ru
RewriteRule ^(.*)$ https://newdomen.ru /$1 [R=301,L]
Вместо olddomen укажите имя старого ресурса, newdomen – нового. Доменная зона в примере ru, но она может быть, конечно, любой.
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Как склеить зеркала
Поисковые системы считают зеркальными ресурсы, которые имеют одинаковый контент, но доступны по разным URL. Яндекс и Google считают их дублями, что ухудшает ранжирование. Кроме того, между ними делится вес, авторитетность, из-за чего ни одно из зеркал не попадает на высокие позиции. Хотя адреса могут различаться, к примеру, только наличием www.
Чтобы избежать конкуренции самим с собой, рекомендуем одно имя назначить главным, а на остальных поставить перенаправление. Это называется склейка зеркал.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www. domen.ru$ [NC]
RewriteRule ^(.*)$ http:// domen.ru/$1 [R=301,L]
Как убрать дубли
Поисковики негативно оценивают дублирующие элементы и понижают ресурсы в ранжировании. При этом они считают, что URL с косой чертой в конце и без нее – дубликаты, что ударит по продвижению. Используйте редирект без слеша на слэш, чтобы избежать этого.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
А этот код, наоборот, сделает основным URL с чертой.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
Ниже на скриншотах пример: в выдаче наклоненной линии нет (слеша), а при переходе – появляется. Пользователь перенаправлен на дубликат.
Как переадресовать посетителей альтернативными способами
Многие CMS имеют функционал, через который можно настроить передачу трафика без влезания в системные файлы.
- В WordPress есть плагины группы Redirection. Они вносят изменения в .htaccess без ручного прописывания кода. Это снижает риск ошибки.
- В Битриксе и MODX команды в файл записывают через системный файловый менеджер.
- В Joomla настройку также ведут через плагины ReDJ, aiRedirectWww, Simple Redirect, JRedirects.
Популярные платформы для конструирования сайтов Wix и Tilda тоже имеют встроенные функции, чтобы перенаправлять обращения к проекту. Здесь они реализованы через общее меню.
Как быть, если нет опыта веб-программирования
Это достаточно сложная задача, так как для написания и вставки кодов хотя бы теоретические знания необходимы. Можно использовать плагины и готовый функционал платформ – они как раз рассчитаны на людей без опыта разработки, которым лучше не влезать в .htaccess напрямую. Также можно обратиться к сервисам, которые создают переадресацию автоматически.
- Seomagnifier – генерирует переход www/без www и наоборот, достаточно ввести домен.
- 301Redirect Code Generator Tool – маршрутизирует доменные имена и другие элементы в них.
- Generate .htaccess – напишет код перемещения для отдельных адресов, разделов, площадки полностью.

Как протестировать настройки редиректа
Когда вы, наконец, организовали маршрутизацию, надо проверить, корректно ли она работает. Можно сделать это вручную: ввести в адресную строку URL, для которого установлен 301-й ответ, и посмотреть, куда вы в итоге попадете. Если на тот адрес, куда оставляли переход, то все верно!
Однако много проверок так сделать затруднительно. Поэтому советуем использовать SEO-сервисы для автоматизации.
- Если нужно протестировать весь проект – Screaming Frog Seo Spider. Бесплатная версия проверит до 500 единиц.
- Если хотите просканировать страницы и разделы – Header Checker Tool, Redirect Checker, Bertal.ru. Все предоставляют услугу без оплаты.

Заключение
301-ый редирект – важный инструмент поискового продвижения. Он решает задачи SEO и при этом помогает пользователям быстрее находить нужную информацию. Поэтому его обязательно надо реализовывать на проектах. Это можно сделать различными методами. Для некоторых из них необходимы знания разработки.
В то же время существуют функции в CMS, с помощью которых владельцы ресурсов могут самостоятельно сделать маршрутизацию, не влезая в кодировку. Выбирайте способ, исходя из объема задач сайта и ваших возможностей.