Правильный 301 редирект в htaccess. Процедура создания файла.htaccess. Редирект с помощью RedirectMatch
301-ая ошибка (301 Permament Redirect), возвращаемая при обращении к определенному адресу страницы, означает, что сайт был на постоянной основе перенесен на новый адрес, также указанный в HTTP заголовке. Как пользователи, зашедшие через браузер, так и поисковые боты будут перенаправляться по новому адресу, при этом, для поисковиков все свойства старого адреса (страницы) будут переданы новому URL . При 301 редиректе произойдет склейка старого и нового адресов: параметры вроде PageRank и тИЦ, а также вес страницы и ссылочный вес старого адреса будет передан новому URL .
Редирект с номером ошибки 301 (moved permanently) это наилучший способ сохранить рейтинг сайта в поисковых системах при переносе его на новый домен или смене системы управления контентом. Переадресацию можно выполнить несколькими способами, в зависимости от установленного программного обеспечения.
301 редирект в.htaccessПри использовании апача (apache) на сервере, переадресацию можно просто выполнить с помощью файла.htaccess, однако, при этом, не забыть включить модули mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini.
Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias
Недостатком данного способа является то, что все адреса, которые необходимо перенаправить, нужно перечислять один за одним, каждый отдельно. Также можно использовать RedirectPermanent для аналогичных целей.
Редирект с помощью директивы 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.(.*)
RewriteRule ^(.*)$ http://%1/$1
или альтернативный, более понятный синтаксис
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^(.*)$ http://domain.com/$1
Редирект запросов с не-www на домен с www префиксом
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$ http://www.domain.com/$1
или же альтернативный вариант
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.(.*)
RewriteRule ^(.*)$ http://www.%1/$1
Редирект запросов можно осуществлять также с помощью скриптов, отправляя клиенту необходимые заголовки.
PHP редирект
ASP редирект
ASP .NET редирект
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(“Location”,“http://www.new-url.com”);
}
ColdFusion редирект
JSP (Java) редирект
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
Прежде чем непосредственно перейти к практике, нужно сказать, что редирект бывает двух типов. Я думаю, вы понимаете, что это перенаправление с одного адреса на другой. Оно необходимо, когда при переходе по одному адресу нужно отправить человека в другое место.
Редирект бывает временным и постоянным. Постоянный (301-й) передает ссылочный вес, временный (302-й) – нет. Сегодня мы поговорим именно о постоянном редиректе, так как именно его использование считается оптимальным.
Настройка 301 редиректа и случаи из практикиОбычно редирект прописывают в файле.htaccess, но это не единственный способ его создать. Дальше в статье я также покажу вариант, как сделать редирект с помощью php.
Но сначала мы поговорим о том, как он делается через.htaccess. Вообще с помощью редиректа можно избавиться от многих проблем. Одна из них – возможные дубли страниц на сайте, так как он, по сути, доступен по двум адресам: www.site.ru, site.ru.
И для поисковика это разные сайты. Таким образом, каждая страница ваших сайтов имеет как минимум 2 адреса, по которым к ней можно обратиться. Это если вы убрали другие дубли. Чтобы предотвратить подобные вещи, обычно делают редирект с www на вариант без www, так как он более короткий и оптимальный. Таким образом, происходит склейка доменов. Главным зеркалом будет site.ru. Если пользователь сам наберет www.site.ru, то его автоматически перенаправит на вариант без www. Это и позволит избежать дублей, так как теперь поисковая машина будет понимать, что домены связаны. И вот сам код:
RewriteCond %{HTTP_HOST} ^www.site\.com$ RewriteRule ^(.*)$ http://site.com/$1
RewriteCond % { HTTP_HOST } ^ www . site \ . com $ [ NC ] RewriteRule ^ (. * ) $ http : //site.com/$1 |
Естественно, тут нужно заменить адрес сайта на ваш. Стоит отметить, что это не единственный способ избежать проблем с www. Другой вариант – указать в файле robots.txt команду Host: домен без www. Еще один способ – настроить главное зеркало в Яндекс.Вебмастере. Это вообще самый простой вариант для Яндекса.
Отлично, ну а что, если вам нужно сделать редирект с одного домена на другой? В таком случае воспользуйтесь таким кодом:
RewriteCond %{HTTP_HOST} !^www\.site\.com RewriteRule ^(.*)$ http://www.site.com/$1
RewriteCond % { HTTP_HOST } ! ^ www \ . site \ . com RewriteRule ^ (. * ) $ http : //www.site.com/$1 |
Где в первой строке вам нужно вписать название домена, с которого должно идти перенаправление, а во второй строке вписать адрес, на который собственно происходит перенаправление.
Собственно, для максимально упрощения могу посоветовать вам такой сервис — http://www.webconfs.com/htaccess-redirect-generator.php . Это так называемый генератор редиректов.
Перенаправление с помощью phpТакже я хочу показать, как делать это с помощью php.
|