Согласитесь, неприятно терять позиции в поисковой выдаче и клиентов из-за переезда сайта или отдельной его страницы на новый URL. К счастью, есть вариант, который позволяет остаться «при своих» – нужно всего лишь знать как настроить 301 редирект и сделать это. Как именно это правильно реализовать вы узнаете из этой статьи.
Тег canonical используют в том случае, если нужно передать поисковым роботам единый адрес страницы. Например, это актуально для интернет-магазинов, у которых много товаров в одной категории.
В случае с использованием тега canonical, настройте динамические переменные для URL. Они помогут проиндексировать сразу несколько отдельных страниц, на которых, тем не менее, будет дублированный основной контент. Но будьте осторожны, так как большинство поисковых систем не любят подобное.
Почему лучше настроить 301 редирект вместо rel=canonical? И что такое 301 редирект?
301 Moved Permanently
Такой 301 редирект является постоянным. Он передает до 99% ссылочного веса, который был у исходного URL. Одновременно с этим поисковому роботу передается команда, что старый адрес устарел.
302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)
302 редирект – временное решение. Он не передает ссылочный вес, поэтому его практически не используют. В зависимости от протокола HTTP, ответ сервера при использовании этого тега может быть таким:
307 Moved Temporarily (HTTP 1.1 Only)
301 редирект стал продолжением 302 для протокола HTTP 1.1. Но несмотря на это будет лучше, если вы используете именно 301 редирект для перенаправления посетителей на другую страницу.
Если вы перемещаете контент на время, можно воспользоваться 307 редиректом. Например, он актуален на время техработ. В этом случае поисковые роботы будут воспринимать сервер вашего сайта как совместимый с HTTP 1.1. Но так как невозможно отследить как именно поисковые системы определяют сайт, рекомендуем отдать предпочтение 302 редиректу.
Вам стоит настроить 301 редирект, если:
При удалении дублей 301 редирект используют редко, хотя он и помогает выполнить это довольно быстро. Его стоит использовать, если вы всерьез занялись поисковым продвижением своего ресурса.
301 редирект передает вес страницы, но при этом не транслирует санкции на новый адрес, поэтому его можно использовать в том случае, если ваш сайт попал под блокировку поисковых систем.
Вам обязательно потребуется 301 редирект уже с первых дней продвижения ресурса. Его используют для «склейки зеркал», чтобы не происходило «размывания» ссылочной массы, когда одни ресурсы указывают ваш сайт с www, а другие – без. Поисковые системы используют только один вариант.
Удобнее всего настраивать 301 редирект в файле .htaccess. Чтобы это сделать правильно, вы будете использовать следующие операторы выражений:
Изменения в файл .htaccess можно внести через FTP, используя FileZila, или в режиме офлайн при помощи редактора Notepad++.
В самом начале вам нужно будет прописать такую строку поверх всех кодов:
RewriteEngine On
Откройте Notepad++и пропишите:
С www на без www:
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule (.*) http://site.ru/$1 [R=301,L]
С без www на www:
RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
Если не помогло, пропишите следующее:
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
Не забудьте «site.ru», указанный в коде выше, заменить на адрес вашего сайта, а также сохранить файл и перезалить его на сервер.
Поисковые системы по-разному воспринимают адрес сайта со слешем и без него в конце. Поэтому еще на этапе создания ресурса, вам следует продумать какой именно вариант вы будете использовать.
Если адрес будет без слеша, пропишите:
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
Если со слешем:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Если вам нужно перенаправить пользователей с адреса на кириллице на новый URL, нужно прописать:
RewriteRule ^старый-урл.html /new-page.html [R=301,L]
Все предыдущие команды 301 редиректа были предусмотрены для перенаправления в пределах одного сайта. Но запись можно упростить, используя:
Redirect 301 /old-page.html http://site.ru/new-page.html
Оба варианта одинаково удачны, так как практически полностью передают ссылочный вес. Но если вы решите воспользоваться второй командой Redirect, внимательно пропишите сначала старый адрес, а затем – новый полностью.
В случае изменения протокола сайта следует обязательно настроить 301 редирект с http на https. Для этого есть множество способов, но чаще всего используют два, указанные ниже.
Вариант №1:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Работает в 99% случаев. Но если не сработает, воспользуйтесь
вариантом №2:
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
Эта команда должна заменить две предыдущие. Но помните:
Эти команды для настройки перенаправления используются чаще всего. Их хорошо понимает поисковая система Google, но для Яндекса желательно прописать еще такой код в файле robots.txt:
User-agent: Yandex Disallow: Host: domain.com
Для настройки 301 редиректа можно использовать скрипты ASP, PHP или JavaScript. Для этого передайте браузеру или поисковому роботу такие заголовки:
HTTP/1.1 301 Moved Permanently
Location: http://vash-sait.ru/category/novaya-stranitsa.html
Дальше все зависит от того, что за скрипт вы будете использовать:
php 301 редирект
Этот код следует прописать в самом начале PHP–файла:
Не забудьте заменить использованный в примере адрес на ту страницу, куда стоит перенаправить поискового робота или пользователей. Редирект на ASP
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://vash-sait.ru/novaya-stranitsa.html");
exit();
?>
<%@ Language=VBScript %>
<%
Response.Status=“301 Moved Permanently”
Response.AddHeader “Location”, “http://vash-sait.ru/novaya-stranitsa.html”
response.end
%>
РедиректASP.NET
ДляRuby on Rails
def old_action
headers[“Status”] = “301 Moved Permanently”
redirect_to “http://vash-sait.ru/novaya-stranitsa.html”
end
Для JSP (Java)
<%
response.setStatus(301);
response.setHeader( “Location”, “http://vash-sait.ru/novaya-stranitsa.html” );
response.setHeader( “Connection”, “close” );
%>
Для CGI PERL
$q=new CGI;
print $q->redirect(“http://vash-sait.ru/novaya-stranitsa.html”);
ColdFusion редирект
<.cfheader statuscode=“301” statustext=“Moved permanently”>
<.cfheader name=“Location”
value=“http://vash-sait.ru/novaya-stranitsa.html”>
Чтобы проверить корректность работы редиректа, просто введите старый адрес сайта или страницы. Перед этим почистите кэш браузера. Если вас перенаправит на новый URL, все в порядке.
Дополнительно вы можете проверить корректность работы 301 редиректа специальными сервисами или программами. Например, 2ip.ru или Netpeak Spider.
Если переадресация не работает или работает некорректно, необходимо исправить ошибки. Например, проверить в .htaccess расширения mod_rewrite в Apache. При его отсутствии 301 редирект может не сработать. У вас должно быть две строки для корректной работы этой команды: mod_rewrite и ReWriteEngine.
Использование [NC] в строках RewriteCond помогает найти несоответствие во входных данных. Без него существует риск того, что адреса, имеющие заглавные и строчные буквы не будут работать корректно.
Применение L в коде [L,R=301] указывает на то, что файл движка воспринимается как последняя строчка кода всего процесса подтверждения ввода данных. Если вы не уверены в верности конфигурации кода в .htaccess, лучше использовать код L в строке, обозначенной как приоритетной.
Не используйте многократную переадресацию, чтобы не снизить скорость загрузки сайта и не потерять те позиции, которые уже есть. Не забудьте обновить sitemap.xml после внесения изменений.
Если вы не смогли самостоятельно настроить 301 редирект после прочтения этой статьи, обратитесь к квалифицированному техническому специалисту, который это сделает за вас.