301 редирект 404 ошибка

I couldn’t find a straight answer to my question and need to know it from the real experts.

I had a website which urls were generated by Joomla. I believe that tons of urls are around in the search engines and I really don’t know which of them all. A 302 redirect would be an option, but I can’t say which urls need to be redirected.

The only thing I know that all the urls were generated by a sef404 script, it’s a SEO script for Joomla.

My question, how can I make sure that all the orphan urls on google and other search engines are delivered correctly with a .htaccess file?

How do I 301 redirect all 404 pages to the homepage (root document)

At the moment I use a custom 404.html error file, but there are too many files and will give a rollercoaster of custom 404 error pages

При работе с веб-ресурсами возникают ситуации, когда происходит удаление, перенос или изменение url-адреса отдельных страниц или сайта целиком. При этом требуется сохранить индексацию в поисковых системах и перенаправить пользовательский трафик на новый адрес. Для решения этой задачи используется функция под названием 301 Redirect. Это один из инструментов SEO, который позволяет не только избежать ошибок при открытии отдельных страниц, но и добиться корректной работы ресурса. Правильные настройки редиректа дают дополнительную возможность получить синергетический эффект в поисковой оптимизации и увеличить количество органического трафика на релевантные страницы. Рассмотрим более подробно, как происходит настройка редиректа 301.

Что такое переадресация 301

Permanent Redirect 301 применяется с целью организации постоянной переадресации с неактуального доменного адреса или url отдельной страницы на рабочую версию. Редирект может понадобиться в связи с глобальным переносом сайта на другой домен, техническими изменениями в написании адреса, удалением страниц, необходимостью внутренней и внешней перелинковки. Один из вариантов использования перманентной переадресации – редирект с нескольких доменных имен, созданных в разных зонах, на один актуальный адрес. Грамотное использование редиректа позволяет перемещать контент без потерь в поисковой индексации, сохранить и даже увеличить прежний вес и позицию в выдаче.

Настроить код состояния HTTP 301 можно разными способами:

  • с помощью HTML и PHP;

  • через панель управления или плагины соответствующей CMS;

  • при помощи специальных скриптов (программ);

  • на уровне хостинг-провайдера;

  • внесением соответствующих записей в файлы .htaccess для сервера Apache или web.config для IIS.

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

Редирект

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

  • Редирект 302. Применяется в случае временной переадресации с одного url на другой. При его использовании поисковая система индексирует все доступные версии сайта или страницы. Объединения ссылочного веса и внутренних метрик на приоритетном ресурсе не происходит. 
  • 307 Temporary Redirect рекомендуется применять в исключительных случаях. Например, при техническом обслуживании сайта, когда он недоступен некоторое время. 
  • Обновления Meta Refresh выполняют переадресацию не на уровне сервера, а непосредственно на сайте. Пользователь сталкивается с временной задержкой (обычно около пяти секунд), после чего для перехода на нужную страницу должен принудительно запустить определенную команду. Этот метод часто приводит к падению посетительского интереса и проседанию поисковых индексов.
  • Редирект rel=«canonical». Позволяет сохранить доступ посетителям ресурса к контенту дублирующихся страниц. При этом для поисковиков наличие команды canonical на одной из страниц говорит о том, что только она подлежит индексации в поиске.

В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи. 

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

Редирект 301

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

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

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

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

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

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

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

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

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

Создание постоянной переадресации 301 через настройки и плагины CMS

В большинстве популярных конструкторов сайтов и CMS (OpenCart, Joomla!, Битрикс, Wix, Тильда) предусмотрена настройка редиректов с помощью встроенных инструментов. Если сайт создан с помощью WordPress, для настройки переадресации можно воспользоваться следующими плагинами:

  • Redirection — самый популярный плагин для настройки редиректов. Кроме основной функции обладает следующими возможностями: сбором статистики переадресаций, отслеживанием ошибок 404, поддержкой регулярных выражений.

  • Safe Redirect Manager — простой плагин, который также поддерживает регулярные выражения, практически не влияет на производительность сайта.

  • Quick Page/Post Redirect Plugin — еще один удобный инструмент оптимизации. Один из недостатков — отсутствие поддержки регулярных выражений. К ссылкам можно добавлять атрибут «nofollow».

  • Simple 301 Redirects. Данный модуль обладает одним недостатком – url для переадресации необходимо прописывать вручную.

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

Чтобы настроить 301 редирект в CMS OpenCart в файле .htaccess необходимо прописать:

RewriteCond %{QUERY_STRING} ^_route_=адрес_старой_страницы.html$

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

Для Битрикс кодировка будет выглядеть следующим образом:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.sng-it.ru$ [NC]

RewriteRule ^(.*)$ http://sng-it.ru/$1 [R=301,L]

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

.htaccess

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

Настройка htaccess

Но настроить редирект 301 довольно просто в базовом редакторе.

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

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

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

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

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

  • Для создания 301 редиректа перейдите в панель управления вашего сайта.

  • Проверьте наличие .htaccess файла в корневом каталоге сайта (public_html, если используете WordPress). Если файл отсутствует, создайте его.

  • Рекомендуем все условия редирект записывать в блоке IfModule, дабы избежать ошибок при выполнении файла htaccess.

<IfModule mod_rewrite.c>
</IfModule>
  • Перед тем как начать прописывать правила перенаправления, необходимо включить механизм преобразований (RewriteEngine) при помощи команды RewriteEngine On.

  • Хостинги применяют по умолчанию 302 или любой другой 3xx редирект. В связи с этим в правилах используются флаги. Рекомендуем дописывать в своих правилах [R=301,L].

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

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

Сайты http://name.site и http://www.name.site для поисковых систем являются разными. А по факту это разные адреса одного сайта.

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

Если изначально в индекс поисковой системы попала версия «с www», в файл .htaccess добавляется редирект на «без www»:

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

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

Если произошла обратная ситуация и необходима переадресация с без «www» на «www», то в файл прописывается:

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

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

Редирект с http на https для всего сайта

В случае перехода на защищенный протокол https для всего сайта, необходимо настроить перенаправление с http на https. Для этого в файл .htaccess добавьте:

RewriteCond %{SERVER_PORT} !^443$

RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

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

RewriteCond %{HTTPS} =on

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

RewriteCond %{HTTPS} off

RewriteCond %{HTTP:X-Forwarded-Proto} !https

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

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

RewriteEngine On

RewriteCond %{SERVER_PORT} !^443$

RewriteCond %{REQUEST_URI} =/page.php

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

В результате пройдет перенаправление на https всех пользователей и поисковых систем.

Постранично

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

RewriteEngine On

RewriteCond %{HTTPS} =off

RewriteCond %{REQUEST_URI} !^/page.php

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

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

Для редиректа с http на https одной страницы (например page.php), в файл добавьте следующую конструкцию:

RewriteEngine On

RewriteCond %{HTTPS} =off

RewriteCond %{REQUEST_URI} =/page.php

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

Редирект сайта с https на http

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

RewriteCond %{SERVER_PORT} ^443$ [OR]

RewriteCond %{HTTP} =on

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

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

В том случае. если необходимо перейти на другой домен, при этом сохранив SEO-позиции, в файл .htaccess прописывают следующее:

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

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

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

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

Редирект на страницу с другим url (без параметров)

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

RewriteRule ^(.*)old_page.html$ http://vash-sait.ru/new_page.html [R=301,L]

Редирект для url (с параметрами)

Если адрес содержит параметр (например, http://name.site/articles.php?section=1, где параметром является «section=1» ), то прописывают следующую конструкцию:

RewriteCond %{QUERY_STRING} section=1

RewriteRule ^index.php http://name.site/articles.php? [R=301,L]

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

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/

RewriteRule ^index.php$ http://name.site/ [R=301,L]

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

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

RewriteCond %{REQUEST_URI} !?

RewriteCond %{REQUEST_URI} !&

RewriteCond %{REQUEST_URI} !=

RewriteCond %{REQUEST_URI} !.

RewriteCond %{REQUEST_URI} ![^/]$

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

Или более короткий вариант:

RewriteCond %{REQUEST_FILENAME} !-d

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

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

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

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

RewriteCond %{REQUEST_URI} !?

RewriteCond %{REQUEST_URI} !&

RewriteCond %{REQUEST_URI} !=

RewriteCond %{REQUEST_URI} !.

RewriteCond %{REQUEST_URI} !/$

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

301 редирект с 404 Not Found

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

301 редирект для страниц 404 Not Found сделать совсем не сложно. Например, этот код перенаправит со всех 404-страниц на главную:

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

Однако делать такие редиректы в массовом порядке не рекомендуется, так как это может испортить SEO-статистику всего ресурса.

Финальный вид файла .htaccess

Пример файла htaccess, после добавления в него редиректов:

Options -Indexes

ErrorDocument 404 /404.php

php_flag register_globals off

php_value pcre.recursion_limit 1000

#Условия 301 редиректа


<IfModule mod_rewrite.c>

RewriteEngine On

# склейка зеркал


RewriteCond %{HTTP_HOST} ^my_site.ru

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

RewriteCond %{HTTP_HOST} ^my_site.ru

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

RewriteCond %{HTTP_HOST} ^www.my_site.ru

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

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

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

RewriteCond %{HTTP_HOST} ^www.my_site.ru

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

# без слеша


RewriteCond %{REQUEST_FILENAME} !-d

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

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

</IfModule>

php_value default_charset utf-8

AddType 'text/html; charset=utf-8' .html .htm .shtml

Синтаксис для регулярных выражений в .htaccess

.

точка заменяет произвольный символ

[abc]

обозначает перечень знаков, совпадающих с буквами a, b, или с

[^abc]

список символов вне указанного диапазона (кроме a, b, с)

*

указывает на то, что предыдущий знак может повторяться 0 или больше раз

[abc]*

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

[^abc]*

приводит к противоположному эффекту

.*

заменяет любой набор символов

«.*»

ищет все подстроки между кавычками

^

начало строки (когда используется в начале выражения)

$

означает конец строки

w

цифра, буква или подчеркивание _

d

заменяет любую цифру

D

может заменить любой знак, кроме цифры

[0-9]

для замены любой цифры

[a-z]

для всех букв от a до z в нижнем регистре

[A-Z]

для каждой буквы от A до Z в верхнем регистре

[a-zA-Z]

любая буква от a до Z во всех регистрах

[a-Z]

аналогично

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

Другие способы создания переадресации 301

Через PHP

Данный вариант подойдет тем, кто хорошо разбирается в web-программировании и PHP. Необходимо открыть файл index.php в корне CMS-движка и прописать там:

if($_SERVER['REQUEST_URI'] == "/index.php") {

 header("Location: /",TRUE,301);

 exit();

}

(в первой строке укажите старый url, а во второй — новый)

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

<?php

  header("HTTP/1.1 301 Moved Permanently");

  header("Location: http://www.newdomain.ru/newdir/newpage.htm");

  exit();

?>

ASP-редирект

<%@ Language=VBScript %>

<%

Response.Status="301 Moved Permanently"

Response.AddHeader "Location", "http://www.new-url.com"

response.end

%>

ASP.NET редирект

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

<script runat="server">

  private void Page_Load(object sender, System.EventArgs e)

  {

    Response.Status = "301 Moved Permanently";

    Response.AddHeader("Location","http://www.new-url.com");

  }

</script>

ColdFusion редирект

<.cfheader statuscode="301″ statustext="Moved permanently">

<.cfheader name="Location" value="http://www.new-url.com">

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

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

<script type="text/javascript" src="redirect.js"></script>

<script type="text/javascript">

  location="https://yandex.ru";

</script>

CGI-скрипт на PERL

$q = new CGI;

print $q->redirect("http://www.new-url.com/");

Ruby on Rails

def old_action

headers["Status"] = "301 Moved Permanently"

redirect_to "http://www.new-url.com/"

end

Редирект в Nginx

if ($host = 'www.domain.com' ) {

  rewrite ^(.*)$ http://domain.com$1 permanent;

}

HTML-редирект

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

<meta http-equiv="refresh" content="5;https://livepage.pro">

Если поставить значение 0 вместо 5, то переадресация на https://livepage.pro произойдет моментально.

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

Редирект 301 в панелях управления сервера

Большинство панелей управления сервера предоставляют возможность настройки переадресации с кодом 301. Рассмотрим варианты решения этой задачи на примере двух популярных ПУ для VDS.

Cpanel

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

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

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

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

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

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

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

ISPmanager

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

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

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

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

  • Seomagnifier — 301 для www;

  • 301 Redirect Code Generator Tool — для доменов и страниц;

  • Generate .htaccess— для страниц, разделов сайтов, доменов.

Проверка корректности настроек 301 редиректа

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

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

  • Redirect Checker, bertal.ru или Header Checker Tool для тестирования отдельных страниц;

  • программой Screaming Frog Seo Spider, способной просканировать весь сайт.

Существует ряд ошибок, которые следует избегать при настройке редирект 301:

  • использование перенаправлений между страницами сайта без изменения их url в ссылках;

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

  • неправильный выбор типа редиректа;

  • перенаправление файла robots.txt;

  • непонимание разницы между rel=canonical и кодом 301;

  • редирект на нерелевантный контент;

  • переадресация, которая не приводит к 200-й странице.

Стоит отметить проблему создания цепочки ссылок, которая может привести к появлению циклического редиректа — ошибки с кодом «ERR_TOO_MANY_REDIRECTS». Наиболее распространенные причины возникновения такого бага – неправильная настройка в процессе создания переадресации, вирусная атака, слишком длинная цепочка редиректов. Не рекомендуется настраивать редирект, содержащий более пяти адресов. Оптимальной является прямая переадресация со старого на новый url.

Заключение

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

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

Настройка 301-редиректа через файл .htaccess с примерами. Инструкция по переадресации на новый домен, с http на https с сохранением позиций и трафика из поисковых систем.

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

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

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

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

Временный редирект

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

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

Код ответа 307 Moved Temporary применяется при необходимости проведения срочных технических работ со страницей. В большинстве случаев не используется.

Переадресация на уровне сайта

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

Указание канонического адреса

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

Когда нужен 301 редирект?

Ответа сервера 301 предназначен для постоянного редиректа и применяется в следующих ситуациях:

  • переезд ресурса на новый домен с сохранением структуры URL-адресов и частичной доли трафика;
  • перемещение страниц по новому адресу — например, в случаях замены URL на ЧПУ (человекопонятные) или при переводе страницы среди разделов;
  • склейка зеркал — при доступности веб-сайта с нескольких зеркал настраивается редирект на основное зеркало.

Также 301-редирект необходим переводе веб-сайта с http на https, когда требуется установка SSL-сертификата.

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

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

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

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

На примере программы WinSCP:

Для отображения файла htaccess воспользуйтесь настройками

Важные моменты при установке 301 редиректа:

  • заключайте прописанные правила в блок …., это предотвратит возможные ошибки;

Правила необходимо заключать в блок <IfModule>

  • включите механизм mod_rewrite с помощью директивы RewriteEngine on;

Для функционирования редиректов установите механизм mod_rewrite

  • добавляйте в правила RewriteRule флаги [R=301,L], так как настройки хостинга предполагают автоматическое определение 3хх редиректа как временного (302) и т.д.;

Установка правила для считывания редиректа как постоянного, а не временного

  • перед внесением любых правок всегда делайте копию htaccess на рабочем столе компьютера — это позволит восстановить работоспособность сайта в случае ошибок при настройке.

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

Редирект домена с адресом www. на основное зеркало сайта

Очень распространенная ошибка — возможность доступа к веб-сайту по двум адресам. Адрес с www (например — www.domain.ru) и без www (domain.ru) считаются полными дубликатами в индексе, поскольку роботы поисковых систем воспринимают адреса как отдельные сайты.

Для исправления ошибки необходимо настроить редирект 301 на основное зеркало в содержимом файла htaccess.

Если главное зеркало без WWW:

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

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

Если сайт с подключенным https-протоколом:

RewriteCond %{SERVER_PORT} ^80$ [OR]

RewriteCond %{HTTP} =on

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

Если главное зеркало с WWW:

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

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

Важно! Замените site.ru на адрес вашего ресурса.

Редирект при переходе с http на https

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

  • наличие уведомления о безопасности соединения увеличивает доверие у пользователей;

При переходе с http на https необходима настройка постоянного редиректа

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

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

Сделать это можно прописав в htaccess:

RewriteCond %{SERVER_PORT} ^80$ [OR]

RewriteCond %{HTTP} =on

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

Где domain.ru — адрес вашего сайта.

При необходимости обратного переезда с https на http:

RewriteCond %{HTTPS} «on»

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

301 редирект для параметрического URL-адреса

GET-параметры часто используются при формировании адресов страниц e-commerce. К примеру, URL-адрес с параметром — http://site.ru/catalog.php?reff=menu_main

RewriteCond %{QUERY_STRING} reff=menu_main

RewriteRule ^index.php http://site.ru/catalog.php? [R=301,L]

Настройка редиректа со страницы веб-сайта на другую

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

RewriteRule ^(.*)catalog-stariy.html$ http://domain.ru/catalog-noviy.html [R=301,L]

Или:

Redirect 301 /catalog-stariy.html http://domain.ru/catalog-noviy.html

Склейка дублей /index.html и /index.php с корнем сайта 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/

RewriteRule ^index.html$ http://sayt.ru/ [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/

RewriteRule ^index.php$ http://sayt.ru/ [R=301,L]

Важно! Где sayt.ru — адрес вашего сайта.

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

Ниже указан редирект для всех страниц сайта.

Со слешем на без слеша:

RewriteCond %{REQUEST_URI} !?

RewriteCond %{REQUEST_URI} !&

RewriteCond %{REQUEST_URI} !=

RewriteCond %{REQUEST_URI} !.

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]

Редирект на новый домен

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

RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]

RewriteRule ^([^/]+) $1 [L]

RewriteCond %{HTTP_HOST} ^site.ru

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

RewriteCond %{HTTP_HOST} ^www.site.ru

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

Важно! Где, domain.ru — адрес старого сайта

domain-new.ru — адрес нового сайта

Редирект кириллического домена (в зоне .рф)

При переезде ресурса с домена .рф на латинский домен, применяется следующая конструкция:

RewriteCond %{HTTP_HOST} ^xn-….xn--p1ai$ [NC]

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

Важно! Где, domain.ru — адрес латинского домена.

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

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

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

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

Редирект 301 на главную страницу с ошибки 404

Периодически на сайте могут возникать битые URL-адреса, отдающие ответ сервера с кодом 404, при попадании на которые пользователи могут покинуть сайт. Есть возможность за счет редиректа автоматически переадресовать трафик на иную страницу сайта, в данном случае на главную.

ErrorDocument 404 http://www.domain.ru/301.html

Другие полезные команды в htaccess

Путь для 404 ошибки

Чтобы при попадании на битый URL-адрес пользователи видели сверстанную и оформленную в стилистике сайта страницу “404 not found”, необходимо указать к ней путь в .htaccess.

ErrorDocument 404 /404.php

Где, /404.php — фактическое местоположение страницы “not found” в файловом каталоге.

В htacess можно указать адрес расположения страницы 404

Редирект через PHP

Для перенаправления прописываются в index.php следующие параметры:

<?php

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

header(«Location: http://www.domain.ru/category/»);

exit();

?>

Установка 403 кода ответа сервера для трафика с нежелательных источников

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

RewriteCond %{HTTP_REFERER} domain1.ru [NC,OR]

RewriteCond %{HTTP_REFERER} domain2.ru [NC]

RewriteRule .* — [F]

Регулярные выражения в файле .htaccess

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

.

замена символа;

[abc]

список знаков, которые совпадают с a, b и с;

[^abc]

знаки за пределами данного диапазона (не считая a, b, с);

*

количество повторений предыдущего значения ≥0;

[abc]*

поиск символов из указанного набора, перечисляемых по порядку подряд;

[^abc]*

позволяет получить обратный результат;

.*

замещение символа;

«.*»

поиск подстрок, указанных между кавычек;

^

начало выражения или целой строки;

$

окончание строки;

w

цифра, нижнее подчеркивание или буква;

d

замена цифры;

D

замена знаков (с цифрами не работает);

[0-9]

замена цифры в числах;

[a-z]

для всех маленьких букв;

[A-Z]

для всех больших букв;

[a-zA-Z]

все буквы, независимо от регистра;

[a-Z]

все буквы, независимо от регистра.

Пример готового файла htaccess

Options -Indexes

ErrorDocument 404 /404.php

<IfModule mod_php5.c>

php_flag allow_call_time_pass_reference 1

php_flag session.use_trans_sid off

#php_value display_errors 1

#php_value mbstring.internal_encoding UTF-8

</IfModule>

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{REQUEST_URI} !?

RewriteCond %{REQUEST_URI} !&

RewriteCond %{REQUEST_URI} !=

RewriteCond %{REQUEST_URI} !.

RewriteCond %{REQUEST_URI} !/$

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

#RewriteCond %{REQUEST_URI} ^(.*)index.(?:html||php)$

#RewriteRule .* %1 [R=301,L]

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

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

RewriteCond %{HTTPS} =off

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

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

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

Redirect 301 /shop/ https://domain.ru/catalog/

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-l

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$

RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]

RewriteRule .* — [E=REMOTE_USER:%{HTTP:Authorization}]

</IfModule>

<IfModule mod_dir.c>

DirectoryIndex index.php index.html

</IfModule>

<ifModule mod_expires.c>

#включение заголовка Expires, указывающего время устаревания файла

ExpiresActive On

ExpiresDefault «access plus 3600 seconds»

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

ExpiresByType image/x-icon «access plus 2592000 seconds»

ExpiresByType image/jpeg «access plus 2592000 seconds»

ExpiresByType image/png «access plus 2592000 seconds»

ExpiresByType image/gif «access plus 2592000 seconds»

ExpiresByType application/x-shockwave-flash «access plus 2592000 seconds»

ExpiresByType text/css «access plus 604800 seconds»

ExpiresByType text/javascript «access plus 604800 seconds»

ExpiresByType image/svg+xml «access plus 2592000 seconds»

ExpiresByType application/x-font-ttf «access plus 2592000 seconds»

ExpiresByType application/x-font-truetype «access plus 2592000 seconds»

ExpiresByType application/x-font-opentype «access plus 2592000 seconds»

ExpiresByType application/font-woff «access plus 2592000 seconds»

ExpiresByType application/font-woff2 «access plus 2592000 seconds»

ExpiresByType application/vnd.ms-fontobject «access plus 2592000 seconds»

ExpiresByType application/font-sfnt «access plus 2592000 seconds»

ExpiresByType application/javascript «access plus 604800 seconds»

ExpiresByType application/x-javascript «access plus 604800 seconds»

ExpiresByType text/html «access plus 600 seconds»

ExpiresByType application/xhtml+xml «access plus 600 seconds»

</ifModule>

<ifModule mod_headers.c>

# Самая главная часть: выдача заголовка, разрешающего кеш определенных типов файлов

<filesMatch «.(ico|jpe?g|png|gif|swf|svg|webp|ttf|otf|woff|woff2|eot|sfnt)$»>

Header set Cache-Control «max-age=25920000»

</filesMatch>

<filesMatch «.(css)$»>

Header set Cache-Control «max-age=25920000»

</filesMatch>

<filesMatch «.(js)$»>

Header set Cache-Control «max-age=25920000»

</filesMatch>

</ifModule>

Наиболее частые ошибки

Расскажем, на какие моменты нужно обратить особое внимание при настройке 301 редиректа — нюансы следующие:

    1. Формирование цепочки редиректов.

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

    1. Редирект на битый url. Возникает при допущении опечатки во вводе URL-адреса, используемого для переадресации целевой страницы.
    2. Постоянное использование временной переадресации. Грубой ошибкой является использование кода 302 для при переезде на другое доменное имя и установке https протокола. Применять 302 редирект следует только в тех случаях, если планируете не удалять страницу, а вернуть ее для получения трафика позднее.
    3. 301 редирект вместо указания канонической страницы. Если возникают дубли страниц пагинации или отдельной мобильной версии относительно страниц десктопной — используйте.

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

Для массовой проверки используйте сервисы комплексного SEO-аудита NetPeak Spider или Screaming Frog SEO Spider.

Для проверки код ответа страниц используйте специализированный софт

Проанализировать коды ответов сервера всех URL-адресов вы можете в графе “Status Code”.

Чтобы проверить вручную, рекомендуем портал https://www.bertal.ru/

Введите адрес страницы в поле “URL” и сможете отследить какие ответы отдает сервер при обращении к ней.

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

Итог

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

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

26 сентября 2019

20 486

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]

Themeisle content is free. When you purchase through referral links on our site, we earn a commission. Learn More

Looking to fix 404 errors in WordPress? Then read on, as today’s beginner-friendly tutorial shows you how.

When faced with the 404 error page, many visitors are quick to assume that the website they are visiting is broken. After all, they aren’t seeing the web page they were expecting to. Instead, they get something like this:

fix 404 errors in WordPress: example 404 page

However, this assumption is incorrect. A 404 error does not necessarily mean that something is wrong with your website at all.

A 404 error simply means that the requested URL cannot be found. This could be the result of a broken link, or something as simple as a typo. In other words, 404s are classified as a client-side error – something the visitor has done wrong, whether directly or indirectly.

Even so, 404 errors will inevitably reflect badly on your website – especially to visitors who fail to understand their cause. They can create problems, too, as lots of errors will undoubtedly hurt the visitor experience. And, if the missing webpage is a sales page, well, that pretty much destroys any possibility of scoring a conversion from that visitor.

Hopefully, now you understand that, while 404 errors might not be your fault (although some are), they need to be fixed. And fortunately, there’s a plugin for the job … perhaps your best solution to fix 404 errors in WordPress – it’s called Redirection, available for free from the official repository:

Today, we are going to look at three common causes of 404 errors, and how to use the Redirection plugin to ‘fix’ them using 301 redirects. While you can create these 301 redirects without using a plugin by editing the .htaccess file manually, the Redirection plugin is the quickest and easiest solution to fix 404 errors in WordPress.

How to fix 404 errors in WordPress: the possible scenarios

The three scenarios we are going to be looking at are:

  • Changing URLs yourself.
  • Problems with inbound links pointed at known destinations.
  • Problems with inbound links pointed at unknown destinations.

Scenario one: changing URLs yourself

This is the one scenario we have full control over.

If, for whatever reason, we decide to change our URLs – most likely a result of changing permalinks – then all of our existing URLs become redundant, effective immediately.

For example, when we switch from example.com/2016/old-link to example.com/new-link, the original URL no longer exists. Requesting that URL will return an error.

Of course, we still want our existing posts and pages to work. Therefore, we need to configure 301 redirects to resolve the problem.

A 301 redirect is the best redirect in most situations – it tells the search engines that the web page has permanently moved. As a result, the search engines won’t penalize you for the changes, and your SEO ranking is preserved – read more about the redirect types here. Fortunately, the Redirection plugin specializes in 301 redirects.

Let’s break scenario one down into two further possibilities:

a) Existing URL changes

If you’ve already changed your URLs, you’re probably experiencing lots of 404s, right? That’s bad news for everybody, so it’s time for a quick firefighting job – or a long one, depending on how big your website is.

In this situation, you’re going to have to create the 301 redirects manually.

Start by making a note of all your old URLs and the corresponding new URLs. Now navigate to Tools / Redirection.

Under the Add new redirection heading, add one of your redundant URLs in the Source URL field. Although there are numerous options for the Match field, ‘URL only’ works best here, so leave it as is.

Similarly, because we know the target location for our web page, we can leave the Action field set to ‘Redirect to URL.’ Leave the Regular expression field blank.

Finally, input the correct URL in the Target URL field. Finish by clicking the Add Redirection button.

Redirection 301 Redirect

Now we need to test the redirect. Visit the old URL and, if you’ve configured the redirect correctly, you’ll immediately be relocated to the correct URL.

Great, your first attempt to fix 404 errors in WordPress is a success!

This is quite a laborious process we’ve discussed, as it involves creating a manual redirect for every single page. If it’s not too late, there is a better way, though…

b) Future URL changes

If you’re considering changing your URLs, do yourself a favor and install the Redirection plugin now. This will save you a lot of time and frustration down the line.

This is because Redirection will track all changes to existing URLs and automatically create a 301 redirect when it detects any changes.

Before you start, click through to Tools / Redirection, then click on the Groups tab. Name your group, set it to WordPress Posts, then click Add.

Redirection Group

Now go to the Options tab, find the Monitor changes to posts field, and select the group you just created. Hit Update.

Redirection Options

Go into a post, then click to edit the URL extension. When you’ve made your changes, hit OK and then Update.

Now, when you navigate back to Tools / Redirection, you will see the plugin has already done the hard work. It has already created a 301 redirect, pointing the old URL at the new one:

Redirection Auto 301 Redirect

Scenario two: incorrect inbound links pointed at known destinations

For most 404 errors, you’re completely blameless, though. For example, we all want lots of inbound links from high authority websites, right? But what if those websites make a mistake and point their link at the wrong place?

In this situation, anyone who clicks that link will arrive at a URL that doesn’t exist, producing a 404 error. As you have no control over the external website, how do you go about fixing this problem?

One option is to reach out to the webmaster regarding any known broken links. Failing that, you can turn to the trusty Redirection plugin again.

Navigate to Tools / Redirection. Next, click on the 404s tab. This screen will list all of the 404 errors generated on your website. Go ahead and try it out by attempting to visit a URL on your site that doesn’t exist – the Redirection plugin will flag the 404 error in real-time.

Redirection 404 detection

Now, not all 404s are worth fixing, but if you see one URL appearing multiple times, you might want to point it at the right place. If the right place is obvious, that is.

When you’ve determined where the link should be pointed, click the Add redirect button.

Redirection Add Redirect

Add the correct URL in the Target URL field. Again, leave the Match and Action options on the defaults, and hit Add Redirection.

Redirection Correcting Broken link

Easy, huh? Now try to visit the broken link, to confirm that your redirect is active.

Scenario three: incorrect inbound links pointed at unknown destinations

In scenario two, we fixed links pointed at the wrong place when the correct destination could be determined.

This won’t always be the case, however, or perhaps some links simply aren’t worth the bother of fixing as they’re so infrequently used.

Remember: you can never prevent or fix 404 errors in WordPress entirely. They are just a part of running a website. The question is: how do you keep the impact of a 404 error to a minimum?

This is the default error message produced by the Twenty Sixteen theme. Let’s be honest: a page like this one is no use to anyone, right?

Example Error Page

Even if the correct destination cannot be determined, you can still serve the customer something more useful than this. For example, you might refer visitors to your most useful resources to get them up and running. Or you might simply redirect them to another existing page, such as the homepage.

Every WordPress theme ships with a default 404 error page, but they aren’t always the most helpful or creative, as we’ve just demonstrated. If you want to customize your 404 page, you can do so by editing your theme’s 404.php file or by installing a plugin.

If you go the plugin route – and it’s by far the more user-friendly option of the two – I recommend the 404 Page by SeedProd plugin:

This option won’t fix 404 errors in WordPress per se. However, by presenting visitors with a useful alternative to the content they were looking for, they are far more likely to remain on your website. And maybe you can still score that conversion after all.

How do you fix 404 errors in WordPress? Share your thoughts, and feel free to ask any questions in the comments below!

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • 301 ошибка nginx
  • 301 код ошибки опель астра h
  • 301 код ошибки http
  • 30088 1021 ошибка офис

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии