Как настроить 301 редирект htaccess, nginx и с помощью скриптов php … ?

Начнем с вопроса, что вообще  это такое 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 ^(.*)$ http://www.loleknbolek.com/$1 [R=301,L]

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

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


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

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

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

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


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

server {
server_name loleknbolek.com;
rewrite ^ http://www.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% эффект.

Оцените статью:

Очень плохоПлохоНормальноХорошоОтлично (8 Рейтинг: 4,50 из 5)
Loading...Loading...

Если Вам понравилась статья, поделитесь с друзьями в соц. сетях:

Вам также может понравиться...

Не хотите пропустить новую статью? Тогда подписывайтесь...

1 комментарий

  1. myhelpers:

    301 редирект для мультиязычного сайта на Joomla 3 c 303 редиректом

    Здравствуйте, уважаемые!

    Прошу помочь решить следующую насущную для мультиязычного сайта на Joomla 3 и, думаю, многих других CMS, проблему:
    При создании нескольких языковых версий сайта средствами мультиязычности самой CMS получается следующее:
    domain.ru -с русским языком
    domain.ru/ru/-русская версия сайта(является основным языком сайта)
    domain.ru/en/-английская версия сайта
    domain.ru/de/-немецкая версия сайта
    и если средствами Joomla 3 удалять префикс /ru/ из адресной строки, то срабатывает 303 редирект, что есть нехорошо, т.к. для SEO нужен 301 редирект.
    Если же не убирать префикс в настройках Joomla 3, то будет существовать domain.ru/ru/ и domain.ru с русским языком, т.е. дубли.
    Как посредством .htaccess убрать префикс /ru/, т.е. сделать 301 редирект с domain.ru/ru/ -> domain.ru и чтобы в последующем переключение языков на сайте было корректным.

    В течение 2-x недель поиска информации в интернете опробовал разные куски кода в htaccess, но рабочего варианта так и не нашел.
    Распишите, пожалуйста, подробно как решить эту проблему, т.к. с этим вопросом не могут справится куча народа, как в русскоязычном сегменте интернета, так и зарубежом, либо опишите другие возможные варианты решения. Если вам несложно, то вышлите мне решение на почту myhelpers@mail.ru , чтобы быстрее смог его реализовать.
    Если для кого-то это тривиально, то простите за незнание! :-)

Добавить комментарий

Уважаемые пользователи!


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


С уважением, Администрация сайта.


Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Связаться с нами

Если у Вас возникли какие либо вопросы, предложения и пожелания для развития нашего ресурса, связаться с нами Вы можете по e-mail: loleknbolek.com@gmail.com, или заполните форму что находиться ниже.

Пишите мы будем рады Вам ответить!