301 редирект - как сделать
- Автор SeRbGa
Всем привет!
Недавно потребовалось переименовать адрес страницы на сайте, что-бы она была доступна по другому адресу, но проблема в том, что она была проиндексирована. Как же сделать перемещение, чтобы не потерять трафик с поисковых систем ?
Итак нам поможет 301 редирект
301-ая ошибка (301 Permament Redirect), возвращаемая при обращении к определенному адресу страницы, означает, что сайт был на постоянной основе перенесен на новый адрес, также указанный в HTTP заголовке. При 301 редиректе произойдет склейка старого и нового адресов: параметры вроде PageRank и тИЦ, а также вес страницы и ссылочный вес старого адреса будет передан новому URL.
Приступим, я опишу несколько способов, которые накопал в интернете, плюс проверил их, у меня заработали все (повторю, что не все имеет право на жизнь в кодже. - пробуйте):
301 редирект в .htaccess
При использовании апача (apache) на сервере, переадресацию можно просто выполнить с помощью файла .htaccess, однако, при этом, не забыть включить модули mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch) и/или 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
Редирект с помощью директивы RedirectMatch
Этот редирект подобен предыдущему, за исключением того, что можно задавать регулярное выражение для старых URL адресов. Допустим, при смене движка с 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; }
Редирект в Joomla 3.0
Допустим есть 2 страницы в Joomla - old.php и new.php
В old.php пишем:
<?php header( 'location: http://www.site.ru/new.php'); exit; ?>
Заключам этот код а теги плагина "{"source"}" - без кавычек и отключаем ее публикацию. (source - это плагин для вставки кода в материал)
проверяем Все работает :)
Редирект в Bitrix.
я попробовал способ PHP - работает.