20Be54EYK6.jpg

Как грамотно сделать 301 редирект

Мы видим 301 ошибку при обращении к адресу страницы, означает, что сайт был на постоянной основе перемещен на новый адрес, который указывается в HTTP заголовке(301 Permament Redirect). И живые пользователи, и поисковые боты будут перенаправляться по нужному адресу. В  этом случае, 301 редирект, параметры типа PageRank и Тиц, а также вес страницы и ссылочный вес старого сайта перейдут новому URL.

Редирект с номером ошибки 301 будет наилучшим способом сберечь рейтинг вашего сайта в поисковиках при смене домена или CMS. В зависимости от вашего ПО 301 редирект можно осуществить несколькими способами.

301 редирект в .htaccess

Когда на сервере используется apache, редирект ссылок возможно выполнить, используя файл .htaccess. Когда применяется 301 редирект htaccess не нужно забывать про активацию модулей mod_alias (обеспечение работы директив Redirect, Redirect Permanent и Redirect Match) и/или mod_rewrite (для использования рерайта) в php.ini.


Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias

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

Существенным минусом данного способа будет тот факт, что все перенаправляемые адреса следует перечислять каждый отдельно по порядку. Здесь еще можно использовать Redirect Permanent.

RedirectPermanent /old-url.html http://new-site.ru/new-url.html

Редирект с помощью директивы RedirectMatch

Это подобный предыдущему редирект. Отличие лишь в том, что существует возможность  задать регулярное выражение для «мертвых» адресов. Если вы собираетесь заменить старый PHP движок на новый с ASP, то можно сделать следующее:

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

Редирект с помощью директивы RewriteRule модуля mod_rewrite

Чтобы  использоватьRewriteRuleнужноубедиться, что в httpd.conf подключен модуль mod_rewrite, а также активирована опция FollowSymLinks. Применение рерайт модуля дает массу возможностей для редиректа страниц на новые адреса.

Перенаправление домена с www на не-www

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

или так:

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

Редирект запросов с не-www на домен с www префиксом

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

или так

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

Редирект с помощью скрипта

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

HTTP/1.1 301 Moved Permanently
Location: http://www.newdomain.ru/newdir/newpage.htm

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

Осуществление редиректав nginx

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

P.S. Работа в Запорожье и вакансии – Тут.

Опубликовано в Разное
/
26 Сен 2014