Начнем с вопроса, что вообще  это такое 301 редирект? Редирект (Redirect)– это перенаправление пользователей с одного домена (сайта) на другой, либо с одной определенной страницы на другу. Используется он довольно таки часто и сейчас мы разберемся, как его настроить и для чего он нужен.

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

  1. Когда необходимо определить зеркало главной страницы или еще називают переадресация домена с www на без  и на оборот.
  2. Возможно Вы сменили домен и вам необходимо все показатели (Тиц, PR) и ссылочную массу со старого домена перенести на новый.
  3. Если имеются дубли на сайте или необходимо перенаправить посетителей с одной определенной страницы на другую.
  4. Если вы имеете или купили домен с отличными показателями и он схожей тематики с вашим сайтом, вы можете склеить (сделать 301 редирект) домен и ваш сайт. Частично  показатели  купленного домена перейдут к вашему сайту. Почему частично? Да потому что никто вам не гарантирует 100% склейку всех показателей.

Перейдем непосредственно к настройке редиректа 301 для разных серверов.

К содержанию ↑

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

Если вы используете сервер Apache, то вы без проблем сможете сделать 301 редирект с помощью файлов .htaccess или httpd.conf. Необходимо так же включить модули, для поддержки директив.:

Директивы:
  • mod_alias (Redirect, RedirectPermanent и RedirectMatch);
  • mod_rewrite (RewriteRule).

Используем директивы Redirect или RedirectPermanent, для настройки 301 редиректа co старой страницы на новую страницу, нового сайта.

Redirect 301 /old-page.html http://new-domain.ru/new-page.html
или
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
или
RedirectPermanent /old-page.html http://new-site.ru/new-pagehtml


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

RedirectMatch /(.*)\.php$ /$1.aspx


Данный метод можно использовать при переносе сайта с PHP движка на ASP.

Переадресация домена с www префиксом на без www в .htaccess.

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

Используем директивы RewriteRule для редиректа 301, домена с www префиксом на без него. Как пример будем использовать наш сайта:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.loleknbolek\.com$ [NC]
RewriteRule ^(.*)$ https://loleknbolek.com/$1 [R=301,L]

Теперь без www префикса на домен с www:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^loleknbolek\.com$ [NC]
RewriteRule ^(.*)$ https://loleknbolek.com/$1 [R=301,L]


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

К содержанию ↑

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

Давайте рассмотрим пример переадресации для сайта с www на без www. Пример для нашего сайта:

if ($host = ‘www.www.loleknbolek.com’ ) {
rewrite ^(.*)$ https://loleknbolek.com$1 permanent;
}


можно еще попробовать вот так:

server {
server_name loleknbolek.com;
rewrite ^ https://loleknbolek.com$request_uri? permanent;
}
server {
server_name www.loleknbolek.com;
…. основная конфига. …
}

К содержанию ↑

Как настроить 301 редирект с помощью скриптов (отправки заголовков)?

Настраиваем с помощью использования скриптов, редирект делаем на новый адрес сайта, со старого.

PHP редирект:

<?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 редирект:

<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) редирект
<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.new-url.com/” );
response.setHeader( “Connection”, “close” );
%>

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

Ruby on Rails:

def old_action
headers[“Status”] = “301 Moved Permanently”
redirect_to “http://www.new-url.com/”
end<

К содержанию ↑

Подведение итогов по настройке 301 редиректа.

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

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

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

И последнее, после того как все сделали, проверьте все страницы которые были перенаправлены, что бы получить 100% эффект.

Поделиться