Содержание

Делаем перенаправление с сайта на сайт

Здравствуйте, читатели блога Сайт с нуля.

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

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

Зачем нужен редирект вебмастерам и seo оптимизаторам? Редирект может понадобится в разных случаях, допустим если вы знакомы с проблемой дублирования страниц, то при помощи redirect их можно склеить, также клеится домен с www и без.

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

Redirect еще можно переменить если вам по каким-либо причинам нужно поменять адрес страницы, но она уже проиндексирована поисковыми системами и занимает высокие места в их выдаче и вам не хочется терять эти позиции, в это случае редирект дает вам возможность сделать это без потерь.

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

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

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

Делаем 301 редирект с помощью файла .htaccess

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

Но, вдруг, если такого файла нет — создайте.

Далее открываете .htaccess в  текстовом блокноте, но лучше, к примеру, в бесплатном редакторе кода Notepad++ и пишите следующее, чтобы создать редирект с www на без него:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.ваш_сайт\.ru$ [NC]

RewriteRule ^(.*)$ http:

Редирект с варианта без приставки на вариант доменного имени с WWW:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^ваш_сайт\.ru$ [NC]

RewriteRule ^(.*)$ http:

Не забывайте про обратную наклонную черту перед точкой (.) в строке RewriteCond — она обязательна. Вместо «ваш_сайт» вписывайте нужные данные.

При 301 редиректе Google должен объединять PR данных ресурсов. Теперь, ваш интернет проект будет доступен и по доменному имени с www, так и без него, но в адресной строке вас будет перебрасывать на то имя, на которое вы настроили редирект.

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

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

Также стоит прочитать

sitesnulya.ru

Переадресация домена | REG.RU

  1. Что такое Переадресация домена?;
  2. Зачем нужна Переадресация домена?;
  3. Виды Переадресации домена;
  4. Как заказать Переадресацию домена?;
  5. Как настроить Переадресацию домена;
  6. Не работает Переадресация домена;
  7. Как удалить Переадресацию домена?

Услуга «Переадресация домена» (называемая также Web-forwarding, URL-forwarding, Web-redirect, HTTP-redirect)
позволяет настроить переадресацию с одного домена на другой, а также на веб-страницу с другим адресом.

При настройке переадресации используется 301 редирект.

Примеры переадресаций
  • с домена mysite.ru на домен my-new-site.ru;
  • с домена mysite.ru на страницу my-new-site.ru/shop.


Внимание

Установка SSL-сертификатов на услугу веб-форвардинг невозможна. Поэтому перенаправление с https://mysite.ru/ не производится.

Все пользователи, набравшие адрес вашего домена (или пришедшие на него по ссылке), попадут на веб-страницу, адрес которой вы укажете в настройках услуги «Переадресация домена». Использование услуги позволит вам иметь постоянный адрес веб-страницы, который не придется менять при смене провайдера.

Услуга «Переадресация домена» может также использоваться при регистрации дополнительного доменного имени для уже существующего веб-сайта.

В качестве примера предлагаем рассмотреть такую ситуацию:

У вас есть домен mycompany.ru, на котором полноценно работает сайт. На нём есть раздел продукции одного из ваших поставщиков. Адрес этой страницы: www.mycompany.ru/mybrand/index.html или подобный.

Для лучшего продвижения товара этого поставщика вы приобретаете целевое доменное имя: mybrand.ru и заказываете для него услугу «Переадресация домена» на адрес уже существующего раздела на вашем основном сайте: www.mycompany.ru/mybrand/index.html.

Теперь посетители могут набирать прямой адрес сайта бренда mybrand.ru, а вы использовать этот адрес в прямой рекламе продукции этого бренда. Легче запомнить адрес – выше эффективность!



Перенаправление запроса

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

Пример:
  • настроена переадресация site1.ru — site2.ru;
  • посетители видят в строке браузера: site2.ru.



Маскировка адреса во фрейме

В этом случае посетители видят адрес той страницы, с которой происходит перенаправление. Веб-страница будет находиться внутри фрейма, и при всех переходах по ссылкам внутри этого фрейма в адресе URL посетители будут видеть доменное имя, с которого происходит переадресация.

Пример:
  • настроена переадресация site1.ru — site2.ru;
  • посетители видят в строке браузера: site1.ru.
Техническая справка

Необходимо помнить, что если вы выбираете «маскировку адреса во фрейме», и хотите установить на вашей веб-странице ссылки на другие ресурсы, в теге ссылки необходимо указать target=_top. В противном случае чужая веб-страница также будет открыта внутри вашего фрейма, и посетитель будет видеть в строке браузера URL-адрес вашего домена. Также необходимо иметь в виду, что истинный адрес веб-страницы, на которую осуществляется перенаправление, хотя и не отображается в строке браузера, все же может быть легко вычислен любым посетителем.



Множественные перенаправления


Вы сможете настраивать множество перенаправлений с вашего домена (с разных адресов на базе домена).

Пример

Вы зарегистрировали домен newdomain.ru и ваш сайт находится по адресу http://mysite.narod.ru. Также, вы имеете страничку, которая находится по адресу http://geocity.com/~myname/cgi-bin/news.cgi (совсем в другом месте). Услуга позволит вам перенаправить запросы:

  • с newdomain.ru на http://mysite.narod.ru;
  • и запросы с newdomain.ru/news на http://geocity.com/~myname/cgi-bin/news.cgi.

О настройке различных вариантов услуги «Переадресация домена» читайте ниже в инструкции Как настроить Переадресацию домена.


  1. 1Авторизуйтесь на сайте REG.RU и перейдите в раздел Домены и услуги.


  2. 2

    Выберите фильтр «Домены», чтобы увидеть список всех доступных вам доменов:



  3. 3

    Кликните по домену, для которого хотите подключить переадресацию:




  4. 4

    Пролистайте открывшуюся страницу вниз и напротив «Переадресация домена» нажмите Заказать:




  5. 5

    Выберите период, на который хотите заказать услугу, и нажмите кнопку Продолжить:




  6. 6

    Проверьте позиции в корзине и нажмите Перейти к оплате:



  7. 7Выберите удобный способ оплаты и оплатите выставленный счет;

Готово! Теперь услуга доступна в вашем Личном кабинете.

С помощью услуги «Переадресация домена» вы можете настроить следующие виды переадресации:

  • перенаправление запроса;
  • маскировку адреса во фрейме;
  • перенаправление с использованием маски.

Подробнее про каждый способ в Виды Переадресации домена.

Настроить перенаправление с поддомена (например, с subdomain.domain.ru) на какую-либо страницу невозможно.

Чтобы услуга «Переадресация домена» начала работать:

Для корректной работы услуги, для домена должны быть прописаны бесплатные DNS-серверы (ns1.reg.ru и ns2.reg.ru). Если для домена прописаны другие DNS-серверы, воспользуйтесь инструкцией:



Настройте DNS-серверы


  1. 1Авторизуйтесь на сайте REG.RU и перейдите к списку доменов.


  2. 2Кликните по имени домена, для которого подключена услуга «Переадресация домена».


  3. 3

    В блоке «Управление доменом» кликните DNS-серверы:




  4. 4

    Поставьте галочку Использовать сервера регистратора и нажмите Изменить:


    Если ранее вы использовали другие DNS-серверы, изменения вступят в силу в течение 24 часов.



  5. 5

    Перейдите в Управление зоной:




  6. 6

    Пролистайте страницу вниз и в раскрывающемся блоке «Настроить зону для услуги Web-forwarding или парковки» нажмите Настроить зону:


Настройте переадресацию с одного домена на другой:


  1. 1

    Перейдите к списку услуг и кликните по названию услуги Web-forwarding:



  2. 2

    В разделе «Управление услугой» кликните Управление web-forwarding:




  3. 3

    Добавьте новое перенаправление, заполнив следующие поля:

    • в поле Переадресация с укажите относительный адрес (без имени вашего домена), с которого требуется перенаправлять посетителей;
    • в поле Переадресация на укажите имя сайта, на который будет перенаправлять посетителей.


    Если вы используете маскировку адреса во фрейме, то можете заполнить поле «Заголовок окна». Указанный заголовок будет отображаться в качестве заголовка страницы в браузере.



  4. 4Нажмите Изменить web-перенаправление. Переадресация с одного домена на другой настроена.



Что делать, если при маскировке адреса во фрейме сайт не адаптируется на мобильном устройстве?

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

В коде head автоматически добавляется метатег:

meta name=“viewport” content=“width=device-width, initial-scale=1.0”

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

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

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


  1. 1

    Убедитесь, что для домена прописаны DNS-серверы ns1.reg.ru и ns2.reg.ru: Как узнать, какие DNS-серверы прописаны для домена;

    Если для домена прописаны другие DNS, их необходимо изменить на ns1.reg.ru и ns2.reg.ru: Как прописать DNS для домена в Личном кабинете REG.RU;



  2. 2

    Убедитесь в том, что услуга активна. Для этого перейдите к Списку услуг, найдите нужную услугу переадресации и кликните по ней:



  3. 3

    Убедитесь, что в поле перенаправление указан корректный адрес, откуда происходит перенаправление:

    если это не так, удалите перенаправление и настройте его еще раз по инструкции.



  1. 1Авторизуйтесь на сайте REG.RU и перейдите в раздел Домены и услуги;


  2. 2

    Кликните на название услуги, которую вы хотите удалить:



  3. 3

    Во вкладке «Операции» нажмите Удалить услугу:




  4. 4подтвердите удаление услуги;

Готово! Услуга будет удалена в течение 15 минут.

Возврата средств при удалении услуги не происходит.

www.reg.ru

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

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

  • сайт открывается по 2 адресам: www.mysite.ua и mysite.ua (для поисковых машин это существенная разница и они воспринимают 2 адреса, как 2 разных сайта), поэтому необходимо сделать чтобы при обращении к страницам сайта с www, шла переадресация на такие же страницы сайт без www, например с http://mysite.ua/news/ на http://www.mysite.ua/news/ (или наоборот).

  • у вас есть несколько доменов, основной mysite.ua и альтернативный my-site.ua и/или кириллический мойсайт.укр. Необходимо, чтобы при наборе в браузере адреса my-site.ua и/или мойсайт.укр посетитель автоматически перенаправился на сайт mysite.ua.

1. Перенаправление домена в файле .htaccess.

1.1. С www-домена на основной домен

Если на вашем сервере включен модуль mod_rewrite, то того, чтобы настроить переадресацию с адресов, начинающихся с www на аналогичные без www, нужно в файле .htaccess, в корневой папке www вашего сайта прописать следующие строки:

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

1.2. С основного домена на www-домен

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

1.3. С одного домена на другой

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

Сделать на старом домене domain1.ua файл .htaccess, с содержанием:

RewriteEngine On
RewriteCond %{HTTP_HOST} domain1.ua
RewriteRule (.*) http://domain2.ua/$1 [R=301,L]

1.4. Перенаправление с нескольких доменов

Необходимо сделать переадрессацию с доменов domain1.ua и www.domain1.ua на новый домен domain2.ua, для это впишите:

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

Аналогично можно делать перенапрвление с domain.ua на domain.com и т. п.

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

2. Перенаправление домена в панели управления хостингом

На примере панели управления «cPanel»

Вы можете выбрать варианты перенаправления – 301 или 302.

301 редирект — это постоянное перенаправление. Т.е. при установке 301 редиректа всем, в том числе поисковым машинам, будет сообщено, что запрашиваемая страница навсегда «переехала» на новый адрес. Такое перенаправление необходимо, например, при переезде с одного доменного имени на другое. Таким образом, вы не потеряете поисковый трафик, а поисковые машины будут оповещены о смене адреса.

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

Также, можно выбрать опции перенаправления, связанные с синонимом сайта с www. Обратите внимание, что переадресацию с домена http://www.site.ua/ на http://site.ua/ средствами cPanel сделать не удастся. Подобный редирект создается с помощью файла .htaccess.

Управление перенаправлением выглядит довольно стандартно. Вы можете удалить созданный параметр:

3. Перенапрвленеи кирилличнский доменов

Переадрессация кириилических доменов ничем не отличается от обычного (на латинице). Просто необходимо использовать конвертер punycode .

Punycode – это метод преобразования символов, относящихся к стандарту Unicode, в последовательность символов, содержащих только символы в кодировке ASCII, а именно 26 букв латинского алфавита (a-z), цифры (0-9) и символ дефиса (всего 37 символов).

Домены, содержащие символы национальных алфавитов называют IDN-доменами. Некоторые сервисы не поддерживают IDN представление доменов. Поэтому не работает домен УКР или другие IDN-домены. В таком случае необходимо использовать имя домена после Punycode-конвертации.

Например, домен http://мойсайт.укр/ после кодирования (можно воспользоваться сервисом http://wwhois.ru/punycode.php) становится http://xn--80arbjktj.xn--j1amh/ , его-то мы и вписываем в уже знакомый код

RewriteEngine On
RewriteCond %{HTTP_HOST} http://xn--80arbjktj.xn--j1amh/
RewriteRule (.*) http://domain2.ua/$1 [R=301,L]


или в соответствующую строку в панели управления.

blog.ukrnames.com

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

Доброго воскресного дня!

Очень часто на форумах можно встретить вопросы, посвящённые .htaccess — файлу конфигурации веб-сервера Apache. Основной камень преткновения в том, что при разработке не стояла задача удобной конфигурации для конечного пользователя (в дистрибутив не включена оболочка для визуальных установок с помощью галочек, выпадющих списков и тому подобное), зато администраторы серверов справляются с этой задачей замечательно, довольствуясь «маном» (от команды Linux — man — краткое руководство от разработчиков, или в данном случае — от профессионалов для профессионалов).

В большинстве случаев требуются совсем несложные манипуляции: безусловный редирект на другой сайт, либо перенаправление с одного места в другое (допустим, когда поменялся URL раздела). И каждый человек начинает считать, что уж его-то проблемы точно нигде нет, и даже бесполезно искать решение в интернете и поиске по форуму. Давайте же посмотрим, что эти проблемы таковыми на самом деле не являются.

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

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

У Apache есть несколько возможностей для осуществления редиректов. Модуль mod_rewrite предоставляет отличный механизм работы с перенаправлениями, и в дальнейшем я буду использовать в примерах именно его. В модуле mod_alias тоже имеются директивы для редиректов с определённого адреса или с адреса, который соответствует регулярному выражению:
Redirect permanent / http://newsite.ru/
RedirectMatch permanent .* http://newsite.ru/

Но в mod_rewrite имеются дополнительные возможности для переадресации, поэтому лучше применять (IMHO) его.

В общем случае, для безусловного внешнего (назовём его пользовательским) редиректа, при котором браузер автоматически переадресовывается на другую страницу, обычно незаметно для пользователя (изменяется адресная строка), можно в .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).

На самом деле, mod_rewrite — штука очень полезная, ведь именно благодаря этому многие движки активно используют так называемые ЧПУ (Человеку Понятный URL). Если вам незнаком этот термин, поясню на примере. Статья про бесплатные движки для сайта имеет адрес:

https://a-panov.ru/2014/11/free-cms/

Взглянув на этот URL, сразу видно, что статья опубликована в ноябре 2014. Убрав название с заключающим слешем — https://a-panov.ru/2014/11/ — получим список всех публикация за ноябрь. Обычные адреса, вида:

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

особой дружелюбностью не отличаются. Увидев такой адрес, нельзя сказать о странице, на которую он ведёт, решительно ничего.

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

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

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

Здесь и дальше я буду опускать директиву включения преобразований:
RewriteEngine On
просто помните: если вы пользуетесь механизмом mod_rewrite, то все условия/преобразования должны выполняться после данной директивы. Для отключения используется такая строка:
RewriteEngine Off
соответственно, для каждого правила нет нужды постоянно «включать» преобразования — это начинает делаться автоматически, сразу после первой директивы.

Как настроить редирект на 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]

%{HTTP_HOST} — текущий домен

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

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

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

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

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

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

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

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

Автор публикации

1 995

не в сети 2 дня


x64 (aka andi)

Комментарии: 2847Публикации: 395Регистрация: 02-04-2009

Загрузка…

a-panov.ru

Как сделать перенаправление адреса сайта — 301 редирект

Здравствуйте, читатели блога Сайт с нуля.

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

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

Зачем нужен редирект вебмастерам и seo оптимизаторам? Редирект может понадобится в разных случаях, допустим если вы знакомы с проблемой дублирования страниц, то при помощи redirect их можно склеить, также клеится домен с www и без.

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

Redirect еще можно переменить если вам по каким-либо причинам нужно поменять адрес страницы, но она уже проиндексирована поисковыми системами и занимает высокие места в их выдаче и вам не хочется терять эти позиции, в это случае редирект дает вам возможность сделать это без потерь.

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

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

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

Делаем 301 редирект с помощью файла .htaccess

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

Но, вдруг, если такого файла нет — создайте.

Далее открываете .htaccess в  текстовом блокноте, но лучше, к примеру, в бесплатном редакторе кода Notepad++ и пишите следующее, чтобы создать редирект с www на без него:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.ваш_сайт\.ru$ [NC]

RewriteRule ^(.*)$ http:

Редирект с варианта без приставки на вариант доменного имени с WWW:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^ваш_сайт\.ru$ [NC]

RewriteRule ^(.*)$ http:

Не забывайте про обратную наклонную черту перед точкой (.) в строке RewriteCond — она обязательна. Вместо «ваш_сайт» вписывайте нужные данные.

При 301 редиректе Google должен объединять PR данных ресурсов. Теперь, ваш интернет проект будет доступен и по доменному имени с www, так и без него, но в адресной строке вас будет перебрасывать на то имя, на которое вы настроили редирект.

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

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

Также стоит прочитать

sitesnulya.ru

Редирект, переадресация или перенаправление

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

Для редиректа можно использовать директивы Redirect, RedirectMatch и возможности модуля mod_rewrite.
Redirect — это самая простая директива для создания редиректа, если вам просто нужно перенаправить посетителей с одного адреса на другой, этот метод вполне подходит.
RedirectMatch — является более продвинутой директивой для перенаправлений, чем Redirect. В ней можно использовать регулярные выражения и обратные связи.
mod_rewrite — самое мощное средство не только для редиректа, но и для других видов преобразования. Для построения правил с помощью mod_rewrite используются директивы RewriteCond и RewriteRule.

Рассмотрим типичные виды перенаправлений и их решение при помощи указанных выше директив

C одной страницы сайта на другую

Часто бывает так, что был изменен адрес целевой страницы и очень не хочется, что бы посетителям при обращении к старому адресу отдавалась 404 ошибка. 

Redirect 301 /old-url /new-url

RedirectMatch 301 test$ http://some-site/test2

RewriteRule ^old-url$ /new-url [R=301]

C одной страницы сайта на другой сайт

При запросе определенной страницы, пользователя перенаправляет на другой сайт.

Redirect 301 /old-url http://newsite.com/

RedirectMatch 301 test$ http://newsite.com/

RewriteRule ^old-url$ http://newsite.com/ [R=301]

Со всех страниц одного сайта на главную страницу другого сайта

То есть, не зависимо от запрошенного адреса, перенаправление будет производится на главную страницу.

Redirect 301 / http://newsite.com/

RedirectMatch 301 /$ http://newsite.com/

RewriteRule ^(.*)$ http://newsite.com/ [R=301]

Такой вид редиректа не совсем подходит, если мы сменили домен для сайта и хотим перенаправлять посетителей на новый адрес сайта. Нам желательно перенаправлять пользователя на запрошенную им страницу, но на новом домене (http://oldsite.com/test -> http://newsite.com/test).

Со всех адресов одного сайта, на такие же адреса другого сайта

RedirectMatch 301 /(.*)$ http://newsite.com/$1

RewriteRule ^(.*)$ http://newsite.com/$1 [R=301]

Редирект с www на без www (www.some-site.com -> some-site.com)

Частая проблема, сайт доступен по обоим адресам, и с www и без www.

RewriteCond %{HTTP_HOST} ^www.(.*)$

RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^www.some-site.com.ru$ [NC]

RewriteRule ^(.*)$ http://some-site.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]

RewriteRule ^(.*) http://%1/$1 [L,R=301]​

В целом эти три примера практически идентичны, различаются только формой записи

Редирект с без www на www (some-site.com -> www.some-site.com)

RewriteCond %{HTTP_HOST} ^([^www].*)$

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

RewriteCond %{HTTP_HOST} ^some-site.com$ [NC]

RewriteRule ^(.*)$ http://www.some-site.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} !^www.some-site.com$ [NC]

RewriteRule ^(.*)$ http://www.some-site.com/$1 [R=301,L]

Редирект с адресов без слеша на адреса на со слешем

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

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*)$ /$1/ [R=301,L]

Это самый простой пример, сюда можно еще добавить проверку URL адреса на содержание GET параметров, что бы c адреса вида /test?id=1&page=5 не было перенапрвления на /test/?id=1&page=5. И проверку на содержание расширения файла, что бы адреса вида /test.html не превращались в /test.html/.

​RewriteCond %{QUERY_STRING} !.+

RewriteCond %{REQUEST_URI} !.

​%{QUERY_STRING} — эта переменная сервера содержит GET параметры, «.+» — означает, что должен быть как минимум один символ, восклицательный знак указывает на несоответствие шаблону. То есть, если переменная %{QUERY_STRING} не содержит ни одного символа, выполняем правило.
%{REQUEST_URI} — эта переменная содержит запрошенный адрес, «!.» — не должен содержать точку. То есть, если в запросе нет точки, правило выполняем. Можно дополнительно уточнить расширения, если в этом есть необходимость:

RewriteCond %{REQUEST_URI} !.(html|htm|php|txt)

В итоге получаем такое правило:

​RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteCond %{REQUEST_URI} !.

RewriteCond %{QUERY_STRING} !.+

RewriteRule ^(.*)$ /$1/ [R=301,L]

​Редирект с адресов со слешем на адреса на без слеша

В целом тут картина примерно та же, что и в предыдущем примере, правило будет выглядеть так:

​​​RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} (.*)/$

RewriteCond %{QUERY_STRING} !.+

RewriteRule ^(.*)/$ /$1 [R=301,L]

Редирект с дублей главной страницы /index.php или /index.html на главное зеркало сайта

Часто CMS создают дули главной страницы сайта, доступные по адресам /index.php или /index.html. Это безусловно плохо влияет на seo оптимизацию сайта. Решается это довольно просто:

RewriteCond %{REQUEST_URI} /index.(php|html|htm)

RewriteRule ^(.*)$ / [R=301,L]

Теперь при запросе http://somesite.com/index.php, http://somesite.com/index.html или http://somesite.com/index.htm будет производится редирект на главную страницу http://somesite.com/. Но здесь не учтен один момент. Некоторые CMS формируют URL адреса с GET параметрами после /index.php (/index.php?option=sometext&view=sometext&Itemid=2
) и если оставить текущее правило, с адреса с GET параметрами будет также производится редирект на главную страницу. Добавляем проверку на GET параметры:

RewriteCond %{REQUEST_URI} /index.(php|html|htm)

RewriteCond %{QUERY_STRING} !.+

RewriteRule ^(.*)$ / [R=301,L]

Теперь редирект с адресов вида 

/index.php?option=sometext&view=sometext&Itemid=2 производится не будет. Но здесь опять не учтен один момент, будут также доступны адреса вида /index.html?option=sometext&view=sometext&Itemid=2 и 

/index.htm?option=sometext&view=sometext&Itemid=2. Конечно не супер страшно, но все же лучше от этого избавится, тем более такая возможность есть. Вариант только один, вместо одного правила, написать два:

RewriteCond %{REQUEST_URI} /index.php

RewriteCond %{QUERY_STRING} !.+

RewriteRule ^(.*)$ / [R=301,L]

RewriteCond %{REQUEST_URI} /index.(html|htm)

RewriteRule ^(.*)$ / [R=301,L]

Редирект с HTTP на HTTPS

Это необходимо делать, при установке SSL сертификата для сайта, что бы все пользователи использовали только защищенное соединения по протоколу HTTPS.

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Но у меня такой вариант вызывал зацикливание — бесконечный редирект. Опытным путем было выяснено, что не работает условие RewriteCond, по сути оно просто не учитывалось. Это условие должно проверять наличие соединения по HTTPS и если его нет — выполнять директиву RewriteRule, делать редирект на HTTPS. Поэтому я нашел другое решение.

​RewriteCond %{ENV:HTTPS} !on

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Это решение отлично сработало. Вообще вариантов довольно много, ниже еще несколько.

RewriteCond %{SERVER_PORT} !^443$

RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

RewriteCond %{HTTPS} off

RewriteCond %{HTTP:X-Forwarded-Proto} !https

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP:X-HTTPS} !1

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

​RewriteCond %{HTTP:SSL} !1

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]

hostgid.net

Переадресация сайта с www и без www

Издревле ломают голову сеошники над вопросом. Вопрос ставиться по-гамлетовски : с www или без www? «Быть или не быть, вот в чем вопрос».

Быть или не быть WWW?

Если речь идет о сайте без какой либо «истории», то рекомендую выбирать вариант без «WWW». Во-первых, это анахронизм. Во-вторых, этот префикс не несет для SEO смысловой нагрузки, а все лишнее принято отсекать. В-третьих, технически, домен с www — это домен 3-го уровня. А уровень домена может быть фактором ранжирования. В случае с «www» — это сомнительно, но кто ж глядел в эти алгоритмы поисковых систем?

Тем не менее, псевдоним сайта с www нужно настроить, чтобы сайт мог быть открыт и по этому адресу.

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

Если вы уже определились с версий домена (быть или не быть www в названии вашего сайта), то можно переходить к следующему этапу.

Переадресация с www и обратно на Apache

Чтобы исправить запросы к сайту, идущие по «неправильному» пути, используйте переадресацию.

Управление переадресацией можно сделать как программно, так и используя настройки сервера. Если ваш сервер — Apache, то:

Во-первых, нам понадобится модуль Apache mod_rewrite. Убедитесь, что он подключен и работает.

Во-вторых, мы внесем изменения в файл .htaccess в корне сайта.

Если вам нужен редирект с ВашДомен.Ру на www.ВашДомен.Ру:


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^ВашДомен\.Ру
RewriteRule (.*) http://www.ВашДомен.Ру/$1 [R=301,L]
</IfModule>



<IfModule mod_rewrite.c>

  RewriteEngine On

  RewriteBase /

  RewriteCond %{HTTP_HOST} ^ВашДомен\.Ру

  RewriteRule (.*) http://www.ВашДомен.Ру/$1 [R=301,L]

</IfModule>


Обратный случай (c www на без www):


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.ВашДомен\.Ру
RewriteRule (.*) http://ВашДомен.Ру/$1 [R=301,L]
</IfModule>



<IfModule mod_rewrite.c>

  RewriteEngine On

  RewriteBase /

  RewriteCond %{HTTP_HOST} ^www\.ВашДомен\.Ру

  RewriteRule (.*) http://ВашДомен.Ру/$1 [R=301,L]

</IfModule>


Учтите, что .htaccess может уже содержать секцию rewrite, тогда добавьте недостающие строки после




Переадресация с www и обратно на NGINX

Если ваш web-сервер основан на nginx, пороемся в конфигах. Нужный файл ищите где то тут (для unix-like hosting):




или для мультисайтового хостинга что то вроде:


/etc/nginx/site-available/ВашДомен.conf



/etc/nginx/site-available/ВашДомен.conf


В этом файле нужно будет добавить секцию перед другими секциями server:

Случай редиректа с ВашДомен.Ру на www.ВашДомен.Ру:


server {
   server_name ВашДомен.Ру;
   return 301 $scheme://www.ВашДомен.Ру$request_uri;
}



server {

   server_name ВашДомен.Ру;

   return 301 $scheme://www.ВашДомен.Ру$request_uri;

}


Обратный случай


server {
   server_name www.ВашДомен.Ру;
   return 301 $scheme://ВашДомен.Ру$request_uri;
}



server {

   server_name www.ВашДомен.Ру;

   return 301 $scheme://ВашДомен.Ру$request_uri;

}


Нужна ли переадресация?

Формально — она не нужна. Т.к. поисковые системы рано или поздно сопоставят 2+2 и обнаружат что ВашСайт.Ру и www.ВашСайт.Ру — одно и тоже.

Для этого желательно настроить главное зеркало сайта в файле robots.txt. Не лишнем будет и формирование канонической ссылки. Этого будет достаточно, чтобы ПС-ы правильно вас проиндексировали (c www или без www).

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

shra.ru

Отправить ответ

avatar
  Подписаться  
Уведомление о