301 редирект на другой домен

Добрый день мои дорогие слушатели/читатели/смотрители smile

Сегодня я расскажу вам про правильную склейку доменов и 301 редирект через файл htaccess.

Признаюсь честно — давненько я уже не писал, все дело в моем личном времени – к сожалению, оно не резиновое и его катастрофически не хватает в последнее время. Жена в роддоме, так что сын и все домашнее хозяйство лежит на мне, а если учесть, что я еще провожу тренинг и у меня есть свои ученики – сами можете представить – сколько у меня времени.

Но давайте ближе к делу!

Почему так важно, что бы сайт был склеен, точнее домен?

Дело в том, что поисковые машины (вроде Яндекс и Google) видят не один сайт, а два. Поясняю:

Допустим, у меня есть домен seregakolt.com, и поисковики видят их два.

— первый seregakolt.com


— второй www.seregakolt.com

Т.е. один и тот же сайт с www и без — поисковыми системами воспринимается их как два различных ресурса.

Какие у этого могут быть последствия? Да самые что ни на есть печальные!

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

Но что касается поисковиков – они будут воспринимать их как ссылки на разные сайты и вы будете просто терять часть ссылок! Т.е. часть PR и ТИЦ будут переходить на другой домен.

Получается, что если вы будете раскручивать сайт без www – а поисковая система первым нашла сайт с www, то сайт без www будет восприниматься как дубликат – и все ваши старания будут напрасны, так как он просто выпадет из рейтинга!!!

Таким образом вы будете терять посетителей!

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

Я знаю, что это чистой воды тупость, но уж так устроены наши поисковики, а раз они приводят львиную долю посетителей – значит, их привередливый характер и бестолковые заскоки нужно учитывать и относиться к ним серьезно!

Как работает 301 редирект и склейка доменов?

Все банально просто – поисковикам указывается главное зеркало и они вес ссылок переводят на его!


Причем склеить можно абсолютно разные домены! Т.е. если у вас сайт был раньше на одном домене, и вы хотите его перевести на другой, но при этом не потерять ссылки, ТИЦ и PR – склейка доменов вам поможет.

Пример можете посмотреть прямо на этом здесь. Попробуйте набрать www.master-css.com и вас все-равно перебросит на master-css.com

И www будет удаляться из любых ссылок на мой сайт. И если кто то поставит ссылку с www, поисковик передаст весь ее вес домену master-css.com

Делаем 301 редирект через файл .htaccess

Сложного в этом ничего нет! Все делается простой правкой (созданием и правкой) файла в обычном блокноте.

Те, у кого CMS MaxSite – могут спокойно просто редактировать этот файл – он идет в комплекте системы!

Если у вас этого файла нет – тогда мы его просто создаем, название файла .htaccess – без каких либо расширений!

Возможно, Windows будет выпендриваться и говорить, что надо задать имя – тогда создайте этот файл через Total Commander или создайте его в любом редакторе (можно в обычном блокноте).

В большинстве случаев он идет вместе с CMS и должен быть у вас на хостинге в корневом каталоге сайта.

Если его там нет – создавайте и размещайте.

Если есть – просто редактируйте.

Теперь определитесь – какой домен вы хотите сделать главным и в путь по инструкциям ниже!


Редирет 301 с www на без www:

Открываем этот файл и добавляем в него следующий код:[]


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

Обратите внимание, что последние две строчки должны идти сразу за строкой RewriteEngine On – это важно!


И наоборот с без www на с www:

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

Просто вместо двух последних строчек напишите эти.

Если у вас есть этот файл, и там содержатся какие-то из этих строчек, но перед ними стоит знак # — это значит что строчка закомментирована и силы не имеет.

Уберите его!


301 редирект с одного домена на другой:

RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Эту строчку вставляем вместо тех двух.

ОБЯЗАТЕЛЬНО:

1. Должна быть строка Options +FollowSymLinks

2. Должна быть строка RewriteEngine On

3. Строчки с редиректом должны идти СРАЗУ после строки RewriteEngine On

4. Файл .htaccess называется так, и никак иначе!

5. Файл .htaccess должен находиться в корневом каталоге!

6. Domain.com – не забудьте поменять на свой домен.

В принципе, это вроде все. Но 301 редирект хорошо понимает Google, а вот для Яндекса надо редактировать/создавать другой файл. Так что шаг ниже является – обязательным!



Склейка доменов для Яндекса:

Опять же идем в корневой каталог сайта и ищем файл с названием robots.txt, если его нет – создаем в обычном блокноте.

В этом файле размещаем следующий код:

User-agent: Yandex Disallow: Host: domain.com

Если у вас этот файл есть, а этих строк нет – значит добавьте их в конце через абзац.

Указываете главное зеркало в строчке Host — не забудьте поставить свой домен smile

Для тех, кто заказывает раскрутку у частных лиц и компаний.

Конечно, это очень редкий случай, но все же… Предупрежден – значит вооружен!

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

Т.е. этот гЛавнюк склеивает и закупает ссылки и рекламу на свой домен, и пока он склеен с вашим – у вас растут пузомерки и посещалка.

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

Причем у вас на сайте может остаться файл robots.txt с главным зеркалом на его сайт.

Будьте бдительны! И требуйте постоянных отчетов работ.

Спасибо за внимание, на связи был Серёга!

Если будут вопросы – задавайте в комментах. wink

master-css.com

Как сделать редирект на другой сайт


На первый взгляд, склейка доменов — дело несложное, стоит прописать всего несколько строчек в htaccess и ожидать результатов. Но результат может быть и плачевным, если вы что-то сделаете не так и по завершению склейки не проверите все. Итак, давайте я пошагово распишу, как сделать редирект на другой сайт, допустим, что в данном случае это ваш старый и новый ресурсы, которые вы хотите склеить.

  1. Настройка постраничного редиректа со старого на новый домен. Редирект прописывается в файле htaccess (корневая директория сайта на сервере) старого сайта. Вот сама директива:
  2. После настройки основного редиректа, рекомендуется вручную проверить корректность перенаправления страниц. Сделать это несложно при помощи программы Netpeak Spider (скачать программу). После установки программы, запустите ее, и введите адрес старого сайта в строку поиска. Далее, выберите тип сканирования — по Google, и запустите сканирование. Если редирект со старого на новый домен осуществлен корректно, все найденные страницы будут отдавать код 301 (Moved Permanently).
  3. Далее, необходимо проверить корректность работы всех страниц с новым доменом. Для этого, используя ту же программу (Netpeak Spider), проверьте коды ответа страниц. Учтите, что теперь проверку делайте по сайту, а не по Google, как в предыдущем пункте.

  4. В течении 1-2 месяца после склейки, страницы старого сайта полностью выпадут из индекса и их место займут новые страницы. Поэтому, примерно через 2 месяца следует просмотреть выдачу поисковиков по новому сайту, и сопоставить данные с показателями до перенаправления. Если данные количества страниц и позиции по запросам примерно одинаковые (запросы могут просесть на некоторое время) — все сделано правильно. Также, рекомендую отслеживать количество 404-х ошибок в панели вебмастера.

Фактически, это все, что требуется сделать для склейки доменов. Однако, описанный выше способ не подойдет, если меняется не только домен, но и внутренняя структура сайта. Тогда придется придумывать костыли. Возможно, часть страниц получится перенаправить при помощи редиректов сложного перенаправления, остальные страницы придется перенаправлять вручную, при помощи директивы Redirect 301. Например, если есть старая страница siteold.com/page-old и ее надо перенаправить на страницу нового домена sitenew.com/page-new, то редирект будет выглядеть так:

Приписывать подобные редиректы необходимо в файле .htaccess старого сайта. 

Особенности склейки доменов для Google и Яндекс

Как я писал выше, в целом процесс склейки более чем простой.
м не менее, существуют некоторые нюансы. Например, для более быстрой склейки сайта в Google необходимо провести некоторые манипуляции в панели вебмастера (Google Webmaster Tools). Зайдите на страницу старого сайта в GWT, в правом верхнем углу кликните по шестеренке, выберите пункт «Изменение адреса», и следуя инструкции, составьте запрос на изменение адреса. Я встречал информацию, что такие действия, при условии правильного перенаправления страниц, сайт может склеиться в течение недели.3 Osobennosti-sklejki-domenov

Для Яндекса специальных «фич» нет. Но хотелось бы упомянуть об одном моменте. В официальной инструкции поисковика по склейке сайтов упоминается два варианта, как это можно сделать. Первый способ — редирект на другой сайт, второй — прописывание нового зеркала в директиве Host (robots.txt). Второй способ мало того, что не универсален, так еще и займет гораздо больше времени. Некоторые специалисты рекомендуют сочетать оба варианта и исключать роботс на старом сайте из редиректов. Скажу сразу — делать это ни к чему, вполне достаточно 301-го редиректа, но пример директивы htaccess все же приведу.

Данное правило не даст перенаправляться файлу robots.txt, в котором и будет прописан Host. Еще раз напомню, делать это абсолютно незачем, я просто навел пример и объяснил, почему делать этого не надо.

sky-fi.info

Что такое редирект?

301 редирект представляет собой переадресацию с одного сайта на другой.


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

Сам htaccess 301 redirect необходим, программисту и вебдизанеру, чтобы с одного поддомена он мог перейти в другой. Так, например, нередки случаи, когда хороший и качественный сайт внезапно попадает под фильтры «поисковиков». В то же время, те читатели интернет – ресурса, который хранят его в своих закладках поисковых систем или же имеют подписку на rss новости, набирая уже имеющийся у них адрес, переходят на «фильтрованный» сайт.

Фильтрованный сайт

Помимо этого, redirect используется, чтобы имея основной проект, повысить его рейтинг в поисковых системах, а купив новый «продвинутый»  домен и произведя переадресацию на свой собственный интернет – ресурс. Таким образом, увеличивается и рейтинг вашего портала.

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

Как сделать редирект 301?


Чтобы произвести редирект следует найти файл htaccess в корневой папке (корневой называется та папка, где расположен ваш сайт).  Обычно это серверные папки, в которые можно войти через ftp типа www, domains, либо /public_html или HTDOCS. Далее, чтобы перейти с сайта на сайт, необходимо написать код (или скопировав, вставить его)

Redirect 301 /старая-страница.html http://новый-домен.ru/новая-страница.html
или
Redirect permanent /старая-страница.html http://новый-домен.ru/новая-страница.html

Можно также воспользоваться и еще одним редиректом, для того, чтобы не добавлять ссылки для адресов в htaccess

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

Чтобы Ваш читатель был перенаправлен с сайта на другой, следует использовать следующую запись:

Redirect / http://www.домен.com

301 редирект с домена с www на без выглядит так:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^ www.nic.ru
RewriteRule ^(.*)$ http:// www.nic.ru /$1 [R=301,L]

301 редирект с домена без www на с www:

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

Чтобы переадресовывать кириллические домены, необходимо воспользоваться конвертером punucod. Для этого, уже имеющийся у вас адрес (например президент.рф) при помощи сервиса http://wwhois.ru/punycode.php (введя сайт) необходимо изменить на www.xn--d1abbgf6aiiy.xn--p1ai.

Сервис punycode


Опытные программисты могут сделать и переадресацию домена на веб адрес – DNS web direct. Но это уже более высокий уровень.

В качестве примера, попробуйте самостоятельно сделать переадресацию следующих доменов http://2domains.ru/, http://timeweb.com,  https://www.nic.ru.

Очень удобно воспользоваться услугой переадресации доменов http://2domains.ru/. Она позволяет не только перенаправить ваш домен на другой адрес, но, также иметь не изменяемый адрес вашей страницы без хостинга и смены провайдера. Также, вы можете воспользоваться данной услугой, чтобы зарегистрировать дополнительный домен.

Владея одной страницей, например mypage, вы можете приобрести полное доменное имя на основном разделе сайта www.mypage.ru/mybrand/index.html. Это позволяет делать прямую рекламу интернет — ресурса, а читатели будут напрямую указывать адрес веб-страницы вашего ресурса и находить целевую страницу!

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

Можно и самостоятельно придумывать способы применения редиректа. Это очень удобно и просто! Стоит только попробовать! Попытайтесь!

На сегодня все. Подписывайтесь на обновления. Жду ваших комментариев, до встречи в следующем блоге! Пока-пока.

С уважением, Роман Чуешов

romanchueshov.ru

Советы

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

Старайтесь не делать редирект на страницу ответ которой отличен от кода 200. Т.е. редирект должен переадресовывать на существующую страницу с 200 ответом сервера.

Браузеры кэшируют редиректы, поэтому проверять их лучше с помощью онлайн ресурсов.

301 редирект с одной страницы на другую

Используется когда страница переехала с одного URL на другой. Например старый URL страницы /page-1/ необходимо сделать 301 редирект на URL http://mysite.com/new-page-1/

Redirect 301 /page-1/ http://mysite.com/new-page-1/  

или

RewriteCond %{REQUEST_URI} ^/page-1/$  RewriteRule ^.*$ http://mysite.com/new-page-1/? [R=301,L]  

301 редирект с www на домен без www

301 редирект домена с www на без www так же называется канонизацией домена или склейкой. Например делаем редирект с http://www.mysite.com на http://mysite.com, т.о. главное зеркало сайта это http://mysite.com

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

или

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

301 редирект с домена без www на домен с www

Также как и в случае описанным выше это еще называется канонизацией домена или его склейкой. Например 301 редирект с домена http://mysite.com на домен http://www.mysite.com, т.е. главное зеркало это www.mysite.com

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

или

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

301 редирект со страниц со слешем на страницы без слеша в конце URL

Часто бывает так что одна и та же страница доступна по двум URL, например /may-best-page и /my-best-page/, если человеку понятно что это одна и та же страница, то поисковые системы понимают это как две разные страницы, соответственно разбивают вес страницы, а также показываются в аналитике (статистике) как 2 разные страницы. Для того, что бы избежать этого вы можете сделать 301 редирект со страниц со слешем в конце URL на без него.

RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} ![^/]$  RewriteRule ^(.*)/$ /$1 [R=301,L]  

Такой редирект будет работать следующим образом:

Запрос (URL) Редирект (URL)
http://mysite/page/ http://mysite/page
http://mysite/page/?value=1 http://mysite/page?value=1
http://mysite/page.html/ http://mysite/page.html
http://mysite/page?value=1/ http://mysite/page?value=1
http://mysite/page без редиректа
http://mysite/page.html без редиректа
http://mysite/page?value=1 без редиректа

301 редирект со страниц без слеша на страницы со слешем в конце URL

Причина делать такой редирект та же, что и в ситуации описанным выше, за исключением того, что редирект необходимо делать со страницы без слеша в конце URL на страницу со слешем в конце URL

RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} !/$  RewriteRule ^(.*[^/])$ /$1/ [R=301,L]  

Пример работы редиректа:

Запрос (URL) Редирект (URL)
http://mysite/page http://mysite/page/
http://mysite/page.html http://mysite/page.html
http://mysite/page?value=1 http://mysite/page/?value=1
http://mysite/page/ без редиректа
http://mysite/page/?value=1 без редиректа

301 редирект со всех страниц одного домена на главную страницу другого домена

К примеру вам необходимо сделать 301 редирект с любого URL текущего сайт (к которому относиться .htaccess) на домен http://mysite.com

RewriteCond %{REQUEST_URI} (.*)  RewriteRule ^(.*)$ http://mysite.com/ [L,R=301]  

301 редирект с каждой страницы одного домена на такой же URL адрес другого домена

Для примера рассмотрим ситуацию когда ваш сайт переехал на новый домен, но у вас есть естественное желание сохранить пользователей переходящих по старым ссылкам и открыть сайт на новом домене с нужной пользователю информацией

RewriteCond %{REQUEST_URI} (.*)  RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]  

301 редирект с протокола http на протокол https

Если у вас на сайте есть SSL сертификат и работает протокол https, то для 301-го редиректа вам необходимо добавить в .htaccess следующий код:

RewriteCond %{HTTPS} !=on  RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]  

301 редирект с протокола https на http

И обратный пример, если у вас нет SSL сертификата и протокол https не работает:

RewriteCond %{HTTPS} =on  RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]  

Удаляем несколько слешей подряд в URL и делаем 301 редирект

Если по случайности у вас появились URL такого вида: mysite.com/page///my-page, то можно сделать 301-й редирект без дублирования слешей:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$  RewriteRule . %1/%2 [R=301,L]  

Удаляем подряд несколько тире (дефисов) и делаем 301 редирект

Как в ситуации с повторяющимися слешами в URL может появиться несколько тире или дефисов, для 301-го редиректа с их удалением добавляем код:

RewriteCond %{REQUEST_URI} ^(.*)--(.*)$  RewriteRule . %1-%2 [R=301,L]  

Вырезать из URL index.php

Пример без GET параметров, например с mysite.com/index.php на mysite.com/

RewriteCond %{REQUEST_URI} /index.php  RewriteCond %{QUERY_STRING} ^z  RewriteRule ^(.*)$ http://mysite.ru/? [R=301,L]  

Пример с GET параметрами, например с mysite.com/index.php?value=1&p=3 на mysite.com/?value=1&p=3

RewriteCond %{REQUEST_URI} /index.php  RewriteRule ^(.*)$ http://mysite.ru/ [R=301,L]  

Несколько примеров совмещения 2-х редиректов в один

Для избежания последовательных редиректов можно использовать совмещенные варианты.

301 редирект с www на без www и со слешем в конце URL

Комбинируем 301 редирект с www на домен без www и 301 редирект со страниц без слеша на страницы со слешем в конце

RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} !/$  RewriteCond %{HTTP_HOST} ^www.(.*)$  RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} ![^/]$  RewriteCond %{HTTP_HOST} ^www.(.*)$  RewriteRule ^(.*)$ http://%1/$1 [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} !/$  RewriteCond %{HTTP_HOST} ^([^www].*)$  RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]  

301 редирект с без www на с www и со слешем в конце URL

Комбинируем 301 редирект с домена без www на домен с www и 301 редирект со страниц без слеша на страницы со слешем в конце URL

RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} !/$  RewriteCond %{HTTP_HOST} ^www.(.*)$  RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} !/$  RewriteCond %{HTTP_HOST} ^([^www].*)$  RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} ![^/]$  RewriteCond %{HTTP_HOST} ^([^www].*)$  RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]  

301 редирект с без www на с www и без слеша в конце URL

Комбинируем 301 редирект с домена без www на домен с www и 301 редирект со страниц со слешем на страницы без слеша в конце URL

RewriteCond %{REQUEST_URI} ^/$  RewriteCond %{HTTP_HOST} ^([^www].*)$  RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} /$  RewriteCond %{HTTP_HOST} ^www.(.*)$  RewriteRule ^(.*)/$ http://www.%1/$1 [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} !/$  RewriteCond %{HTTP_HOST} ^([^www].*)$  RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} /$  RewriteCond %{HTTP_HOST} ^([^www].*)$  RewriteRule ^(.*)/$ http://www.%1/$1 [L,R=301]  

301 редирект с www на без www и без слеша в конце URL

Комбинируем 301 редирект с www на домен без www и 301 редирект со страниц со слешем на страницы без слеша в конце URL

RewriteCond %{REQUEST_URI} ^/$  RewriteCond %{HTTP_HOST} ^www.(.*)$  RewriteRule ^(.*)$ http://%1/$1 [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} /$   RewriteCond %{HTTP_HOST} ^www.(.*)$  RewriteRule ^(.*)/$ http://%1/$1 [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} !/$  RewriteCond %{HTTP_HOST} ^www.(.*)$  RewriteRule ^(.*)$ http://%1/$1 [L,R=301]    RewriteCond %{REQUEST_URI} !?  RewriteCond %{REQUEST_URI} !&  RewriteCond %{REQUEST_URI} !=  RewriteCond %{REQUEST_URI} !.  RewriteCond %{REQUEST_URI} /$  RewriteCond %{HTTP_HOST} ^([^www].*)$  RewriteRule ^(.*)/$ http://%1/$1 [L,R=301]  

кодер.укр

Полезные советы

  • Современные браузеры по умолчанию используют кеширование для редиректов. Чтобы проверить работу редиректа необходимо очистить кеш в браузере или использовать любой сторонний сервис по проверке кода ответа сервера.
  • Нежелательно создавать цепочки редиректов. При медленной работе сервера это вызовет недовольство пользователя. Поисковые роботы также не любят последовательные редиректы — вес исходной страницы может не передаться.
  • При составлении файла .htaccess простые директивы должны идти раньше сложных, которые распространяются на весь сайт. Такая компоновка будет более удобной при работе с файлом и поможет избежать путаницы.

Наиболее популярные правила

Приведенные примеры работают для серверов функционирующих на APACHE, для NGINX настройки в файле .htaccess работать не будут. В примерах используется %{QUERY} — так обозначается часть URL, которая следует после знака вопроса. Правила для редиректа срабатывают только при условии соответствия правилу указанному в редиректе.

При настройке правила редиректов в файле .htaccess все правила необходимо указывать после указанных двух строк, либо просто добавьте их:

  Options +FollowSymLinks
RewriteEngine On

301 редирект все страниц без WWW на страницы с WWW

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

Обратный редирект со страниц с WWW на страницы без WWW

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

301 редирект с одной страницы на другую

  Redirect 301 /oldpage.html http://mysite.ru/newpage.html  

Переадресация для разделов через RewriteRule

  RewriteRule ^papka /papka-new/$1 [R=301,L]  

301 редирект для страниц имеющих Get-параметры в URL

Для наглядности примера допустим адрес страницы имеет вид http://mysite.ru/catalog/index.php?IBLOCK_ID=5&SECTION_ID=15. Следующее правило будет делать переадресацию:

  RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=15$ [NC]
RewriteRule ^catalog/index.php$ /newcatalog/? [R=301,L]

Иногда необходимо настроить редирект для изменяющихся Get-параметров, например в текущем примере динамическим параметром будет SECTION_ID:

  RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=(.*)$ [NC]
RewriteRule ^catalog/index.php$ /newcatalog/? [R=301,L]

Переадресация со страниц без значения Get-параметра

Например адрес страницы имеет вид — http://mysite.ru/?addon, тогда редирект будет следующим:

  RewriteCond %{QUERY} ^addon$ [NC] 
RewriteRule ^$ /? [R=301,L]

Переадресация одного адреса, без вложенных адресов

Например довольно часто необходимо настроить переадресацию со страницы раздела http:/site.ru/razdel/, однако прочие страницы в данном разделе должны работать без редиректа, например страница http://mysite.ru/razdel/section.php?SECTION_ID=1. Для этого нужно добавить всего один символ — $.

  RewriteRule ^razdel/$ http://mysite.ru/new-razdel/ [R=301,L]  

Настройка кириллических доменов .РФ

Правила и логика работы с доменами на кириллице абсолютно такие же, единственным отличием является замена символов кириллицы на специальный код.

301 редирект с одного домена на другой

  RewriteCond %{HTTP_HOST} ^oldmysite.ru$ [NC]
RewriteRule ^(.*)$ http://newmysite.ru/$1 [R=301,L]

Правило для доменов .РФ

  RewriteCond %{HTTP_HOST} ^xn-....xn--p1ai$ [NC]  RewriteRule ^(.*)$ http://mysite.ru/$1 [R=301,L]  

Редирект на папки со слешем на конце

  RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mysite.ru/$1/ [L,R=301]

Редирект на папку без слеша — убираем слеш на конце

  RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L]

Переадресация с домена в папку другого сайта

RewriteCond %{HTTP_HOST} ^oldsite.ru$ [NC]
RewriteRule ^(.*)$ http://newsite.ru/oldsite/ [R=301,L]

Редирект со всех страниц кроме определенной папки

Для примера возьмем в исключение папку панели администратора в CMS Bitrix

  RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301] 
RewriteRule ^(.*)$ http://mysite.ru/ [L,R=301]

Переадресация всех файлов папки на конкретный файл

  RewriteRule ^papka(.*)$ /my-file.html [L,R=301]  

Переадресация файлов папки на другой файл с исключением

  RewriteRule ^papka/file.html /new-file.html [L,R=301]
RewriteRule ^papka(.*)$ /my-file.html [L,R=301]

Редирект замены расширений файлов — с html на php

  RedirectMatch 301 (.*).html$ http://newsite.ru$1.php  

Указываем порядок загрузки индексных файлов в корне

  DirectoryIndex index.php index.html index.htm index.shtml  

Редирект с index.php на корень сайта

  RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/  RewriteRule ^index.php$ http://mysite.ru/ [R=301,L]   

Редирект всех индексных страниц на корень

  RewriteRule ^(.*)index.php$ http://mysite.ru/$1 [R=301,L]  

Переадресация с поддомена на основной домен

  RewriteCond %{HTTP_HOST} ^abc.mysite.ru$ [NC] 
RewriteRule ^(.*)$ http://mysite.ru%{REQUEST_URI} [R=301,NC,L,QSA]

Редирект страницы из различных директорий

Если в разных папках сайта лежит файл с одинаковым названием, то настроить переадресацию этих файлов на один.

  RewriteRule [^abc]/nash-file.php /nash-file.php [R=301,L]  

Создаем ЧПУ-копию динамических страниц

Для страницы появится обычный URL без передачи Get-параметров.

  RewriteRule ^catalog/okno/?$ /firma/okna/detail.php?ID=123 [NC,L]  

Переадресация с https на http

Необходимое правило для решения проблемы с дублями страниц в поисковых системах.

  RewriteCond %{HTTPS} "on"  RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]  

Настройка ответа 403 для спама по REFERER

Данное правило позволяет не пускать на сайт спамный трафик с других сайтов:

  RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR] 
RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC]
RewriteRule .* - [F]

Обработка ошибки 404 в .htaccess

Для поисковых систем очень важно получать код ответа 404 для несуществующих страниц

ErrorDocument 404 /404-for-me.php

Особенности настройки

Следует помнить, что все правила выполняются в .htaccess в порядке следования их в файле, поэтому необходимо следить за очередностью правил.

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

Включение редиректа для определенных User Agent

Например редирект на мобильную версию для планшетов и смартфонов:

  RewriteCond %{HTTP_USER_AGENT} (iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|j2me|symbian|series 60|symbos|windows mobile|windows ce|ppc|smartphone|blackberry|mtk|bada|windows phone) [NC] 
RewriteRule (.*) http://m.mysite.ru/ [L,R=301]

Настройка редиректов для всех поисковых роботов

  RewriteCond %{HTTP_USER_AGENT} !(accoona|ia_archiver|antabot|ask jeeves|baidu|dcpbot |eltaindexer|feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer |ooyyo|pagebull|scooter|w3c_validator|jigsaw|webalta|yahoofeedseeker |yahoo! slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer) [NC] 
RewriteRule (.*) http://no-rank-site.ru/ [L,R=301]

Синтаксис и символы

  • . — Точка означает любой символ.
  • [abc] — перечень символов, совпадающих с буквами a, b, или с.
  • [^abc] — перечень символов, не входящих в диапазон. Условию соответствует любой символ, кроме a, b, с.
  • * — предыдущий символ может повторяться 0 и более раз.
  • [abc]* — найти символы из заданного набора идущие подряд.
  • [^abc]* — обратная операция.
  • .* — замена любого набора символов. «.*» — найти все подстроки между кавычками.
  • ^ — обознает начало строки (при использовании в начале выражения).
  • $ — конец строки.
  • w — буква, цифра или подчёркивание _.
  • d — любая цифра.
  • D — любой символ, кроме цифр.
  • [0-9] — указание на любую цифру.
  • [a-z] — указание на любую букву от a до z с нижним регистром.
  • [A-Z] — указание на любую букву от A до Z с верхним регистром.
  • [a-zA-Z] — любая буква от a до Z, регистр не важен.
  • [a-Z] — тоже самое, только короче.

Флаги для доп. опций

  • NC — NoCase отключает проверку регистра символов при срабатывании правила.
  • R — Redirect останавливает изменение URL-адреса и возвращает результат. Самое популярное значение R=301, однако встречаются и другие для временных редиректов (302, MOVED TEMPORARY).
  • L — Last останавливает создание URL-адреса и строка считается окончательной.

canwas.ru

Редирект .htaccess: постоянное перенаправление, 301

Подобная штука имеет разные названия. Непонятки может вызвать разве что число — почему же 301? Суть кроется в самом протоколе HTTP, который на запросы клиента отвечает определённым кодом состояния. Код 404 Not Found (Страница не найдена) известен почти всем. Код 200 OK почти не известен, но именно он означает, что всё в порядке и документ будет показан в браузере. А вот код 301 Moved Permanently означает, что документ окончательно перебрался на новый адрес. Именно его и называют чаще всего перенаправлением, хотя общий пул ответов обозначен как — 3xx: Redirection.

В общем случае, для безусловного внешнего (назовём его пользовательским) редиректа, при котором браузер автоматически переадресовывается на другую страницу, обычно незаметно для пользователя (изменяется адресная строка), можно в .htaccess поместить такой код:
RewriteEngine On
RewriteRule .* http://newsite.ru/ [L,R=permanent]

Здесь, первая строка включает механизм модуля mod_rewrite, который позволяется вытворять с адресами всё, что угодно. Назовём это преобразованием URL по условиям на лету. Вторая строка определяет непосредственно правило для преобразования, в примере выше все запросы редиректятся на http://newsite.ru/. В квадратных скобках размещаются флаги: L — последнее (Last) правило, R — тип перенаправления (Redirect), указывается в виде R=code, где code — буквенное или числовое обозначение (permanent или 302).

Этот способ хорош, когда вам неважно, на какую страницу нового сайта ссылаться. Но если вы переехали на другой домен, то желательно делать редиректы всех запросов с сохранением адресов. Для этого используйте такой код:
RewriteRule ^.*$ http://newsite.ru/$0 [QSA,L,R=permanent]
Новый флаг QSA сохранит так же и параметры, которые можно встретить в адресах после знака вопроса. В уже знакомом примере:

https://a-panov.ru/?p=389

если я размещу в .htaccess код выше, то произойдёт перенаправление на адрес http://newsite.ru/?p=389 чего без данного флага не было бы.

Как настроить редирект на www (или без www)

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

Вариант попроще, для одного домена. Перенаправление производится с поддомена www.site.ru на site.ru:
RewriteCond %{HTTP_HOST} ^www.nsite.ru$
RewriteRule .* http://nsite.ru/$0 [QSA,L,R=permanent]

Здесь появилась новая директива RewriteCond, которая задаёт условие, при котором должны срабатывать редиректы — правила RewriteRule. Условие, в данном случае, имя домена, соответствующее www.nsite.ru (в регулярных выражения символ точки означает «любой символ», поэтому его желательно экранировать с помощью обратного слеша).

Обратное перенаправление тоже выполнить очень просто:
RewriteCond %{HTTP_HOST} ^nsite.ru$
RewriteRule .* http://www.nsite.ru/$0 [QSA,L,R=permanent]

Оба варианта рабочие, но у них есть маленький минус — для каждого нового конфига необходимо заменять домен nsite.ru на свой собственный. Нельзя ли сделать уникальный вариант? Легко!

Редирект с любого поддомена www:
RewriteCond %{HTTP_HOST} ^www.(.*)$
RewriteRule .* http://%1/$0 [QSA,L,R=permanent]

Редирект на поддомен с www:
RewriteCond %{HTTP_HOST} !^www.
RewriteRule .* http://www.%{HTTP_HOST}/$0 [QSA,L,R=permanent]

Как создать .htaccess

Такие вопросы тоже возникают. Проблема в том, что стандартный Проводник (приложение в Windows, отвечающее за графический интерфейс) не позволяет создавать файлы, начинающиеся с точки (созданием файлов или папкок осуществляется щелчком правой кнопкой на рабочем столе или в окне, и выбора нужного действия из списка Создать). Но выход есть: открывайте стандартный рекдатор Notepad (блокнот), в меню выбираете Файл → Сохранить как…, и в качестве имени сохраняемого файла указываете .htaccess — после этого он будет создан.

Файл .htaccess не работает

Бывают случаи, когда директивы из файла не работают. Обычно это вызвано тем, что в конфигурации Apache отключена поддержка .htaccess, за что отвечает директива:
AllowOverride none

Обычно это делается, чтобы несколько увеличить быстродействие — в этом случае веб-сервер не производит поиск и разбор .htaccess.

Возможен и такой вариант, что на сервере не используется Apache, например, IIS — основной «гость» на Windows-хостинге. Для уточнения свяжитесь с поддержкой своего хостера.

Есть ли какой-нибудь аналог .htaccess в nginx?

Ещё один довольно частый вопрос. В этом веб-сервера такой возможности нет. Однако, подобное обычно и не требуется. Дело в том, что nginx, как правило, устанавливается в качестве фронденда, т. е. принимает и обрабатывает все запросы, которые либо выполняет сам, либо перенаправляет на бэкенд, роль которого может выполнять Apache, который можно дополнительно конфигурировать с помощью .htaccess.

a-panov.ru

Памятка по используемым символам и обозначениям

Строчка RewriteCond — условие выполнения правила RewriteRule. Если условие выполняется, то срабатывает редирект. Правила могут задаваться с помощью регулярных выражений.

Спецсимволы, используемые в правилах и их значения.

  • ^ — спецсимвол начала строки;
  • $ — спецсимвол конца строки;
  • ! — спецсимвол отрицания;
  • . — точка, заменяет любой символ, но только один;
  • () — группировка;
  • — «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом;
  • # — начало текстового комментария в файле.

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

  • ? — символ повторяется 0 или 1 раз.
  • + — повторяется от 1 до 65536 раз.
  • * — повторяется от 0 до 65536 раз.

Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем [NC] или [R=301,L].

  • NC — флаг NoCase, отключающий проверку регистра символов при срабатывании правила.
  • R — флаг Redirect, производит процесс остановки изменения URL-адреса и возвращает результат. Чаще всего используется значение R=301, но возможны и другие для временных перенаправлений (302, MOVED TEMPORARY).
  • L — флаг Last, останавливает формирования URL-адреса и строка считается окончательной.

pixelplus.ru

Что такое 301 редирект?

Редирект (redirect) — это автоматическое перенаправление (переадресация) пользователя с одной страницы сайта на другую страницу. Редирект может осуществляться в пределах одного домена, то есть, к примеру, с главной страницы на внутренние или с внутренних страниц на главную. Но чаще всего, происходит перенаправление (редирект) с домена на домен, то есть на другой сайт.

Цифра 301 означает код, который возвращает веб-сервер в ответ на запрос браузера, когда он запрашивает какую-либо страницу. Обычно, он отдает код 200 (OK) – страница существует, и она немедленно отображается в окне браузера. А вот 301 означает, что страница перемещена перманентно, то есть навсегда. В ответе сервера также указывается новое местоположение перемещенной страницы.

В каких случаях необходим серверный редирект?

В своей работе мне приходиться сталкиваться с типичной ситуацией: клиент создал новый сайт, под него арендовал новый домен с более красивым и коротким именем. Кстати, а вы читали статью как выбрать доменное имя правильно?
Затем он перенес туда весь контент со старого сайта. Что дальше? Дальше моя задача состоит в следующем: оставить в поиске только один новый сайт, а со старого перенести его «вес», со всем внешним ссылочным, тИЦ, PR, позициями и трафиком. То есть, попросту говоря, — «склеить» старый сайт с новым. Для этого и нужно сделать редирект.

Правильный редирект — он какой?

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

Я сознательно не буду упоминать варианты использования мета-тегов:

Или скриптов JavaScript, так как такие операции могут быть приняты за попытку применить дорвей.

Самым правильным перенаправлением считается серверный редирект, когда браузеру и поисковому роботу отдается код 301. Бывают еще редкие случаи употребления файла robots.txt. Но я вам не рекомендую использовать его в этих целях. Всё-таки robots.txt предназначен для других задач.

Редирект через htaccess

Файл .htaccess является единственным способом изменять настройки веб-сервера под нужды вебмастера. Это просто файл, размещаемый обычно в корне сайта, в котором прописываются директивы, управляющие поведением сервера.

Именно в файле .htaccess предстоит разместить код, который будет перенаправлять пользователя на другую страницу и/или на другой домен. Скрипты редиректов, показанные ниже, необходимо размещать в этом файле. Он должен находиться в корневой папке сайта, и обязательно не забудьте поставить точку (.) перед именем файла.

Случай №1: изменение имени файла

Вы поменяли название файла old_file.html на new_file.html. Чтобы автоматически перенаправить посетителя с одного файла на другой, запишем в файле .htaccess следующую директиву:

Случай №2: Замена расширения файла

Вы изменили расширение файла с file.html на file.php. В этом случае пишем:

Как видите, код практически идентичен случаю №1.

Случай №3: Редирект с домена с www на домен без www

Самый, пожалуй, распространенный случай, когда необходимо «склеить» два домена: www.example.com и example.com. Если этого не сделать с самого начала, то может сложиться ситуация, когда поисковая система проиндексирует оба сайта (хотя физически это будет один и тот же сайт). Такого допускать ни в коем случае нельзя. Сразу определяйтесь какого вида домен вы хотите видеть в выдаче: с префиксом www или без него.

Пример кода, когда хотите оставить домен без www:

Пример кода, когда хотите оставить домен c www:

blogbit.net


You May Also Like

About the Author: admind

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector