редирект с основного домена на поддомен
Переадресация домена на субдомен www или другой домен, и наоборот
Автор: Сергей Коваленко · Опубликовано 17.03.2017 · Обновлено 04.10.2017
Иногда вы можете столкнуться с ситуацией, когда есть вроде как один домен domen.com, но при вводе его в адресную строку браузера он открывается в двух вариантах: как http://domen.com, так и http://www.domen.com. Вроде ничего страшного, ведь все равно открывается 🙂 И в Search Console и в Яндекс Вебмастер домен www.domen.com настроен как зеркало domen.com, или наоборот.
Но тут то и кроется подвох. Дело в том, что если у вас не настроен 301 редирект с основного домена на его зеркало, то поисковые роботы Google и Яндекс при очередной перепроверке увидят, что домен domen.com и www.domen.com не зависимы друг от друга и могут «расклеить» их между собой. Что приведет к тому, что эти два домена появятся в поисковой выдаче, а так как на них абсолютно одинаковый контент, то поисковые системы могут существенно понизить их позиции в выдаче.
Или, например, вы приобрели новый домен, который хотите использовать для своего сайта. Что же делать со старым доменом? Особенно если вы долгое время развивали свой проект и обросли большим количеством ссылочной массы с других ресурсов. Конечно же настроить 301 редирек, чтоб не потерять проделанную работу!
Конечно многое зависит от хостинга, на котором размещены ваши сайты, и иногда приходится прибегать к помощи службы поддержки, чтоб правильно настроить переадресацию сайтов. Но зачастую хватает довольно простых манипуляций с файлом .htaccess, расположенном в корневом каталоге сайта. Рассмотрим как следует проводить эти манипуляции.
Обязательно сохраните резервную копию файла .htaccess перед тем, как вносить в него какие — либо изменения.
Так же обратите внимание на то, что если у вас на хостинге включена функция переадресации в панели управления, то не стоит ее настраивать в файле .htaccess. Нужно использовать только один вариант.
Переадресация с одного сайта на другой
Переадресация с www на без www и наоборот
Переадресация со всех несуществующих поддоменов на Ваш сайт
Переадресация всех запросов на сайт на отдельную страницу нового сайта
Во всех случаях параметр R=301 говорит о том, что переадресация будет сделана через 301 редирект.
Надеюсь данная информация окажется полезной для вас и поможет избежать проблем с «Расклейкой» зеркал сайтов и с понижением их в поисковой выдаче.
А как вы обычно настраиваете переадресацию на своих доменах?
Как сделать 301 редирект (переадресацию) через htaccess
Редирект (перенаправление или форвардинг) —позволяет автоматически переадресовать пользователя, посетившего страницу А на страницу Б. Например, пользователь, пытающийся открыть страницу site.ru/page1/ будет попадать на site.ru/page2.
Как сделать редирект через файл htaccess
Для того, чтобы перенаправить пользователя с одной страницы на другую требуется использовать следующую комбинацию:
Redirect 301 site.ru/page1/ site.ru/page2/
Важно! Можно записывать адреса в относительном виде, например, /page1/ и /page2/.
Также допускается использование конструкции:
Redirect permanent site.ru/page1/ site.ru/page2/
Для того, чтобы выполнить правило, потребуется посетить административную панель хостинга (или же зайти через FTP), где в корневой папке сайта лежит файл htaccess.
Вводим нужное нам правило.
Как проверить работу 301 редиректа?
Для этого можно использовать инструмент проверки ответа сервера Яндекса:
Здесь вводим адрес первой страницы и видим следующее:
Как видим правило применилось и работает корректно.
Как сделать перенаправление на другой домен?
В этом случае необходимо автоматически перекидывать всех пользователей с домена domain1.ru на domain2.ru при помощи функции:
RewriteRule ^(.*)$ http://www.domain2/$1 [R=301,L]
Переадресация с http на https
При переезде сайта с http на https (установка SSL-сертификата) потребуется код, который не требует дополнительных модификаций:
Второй метод осуществляет перенос с http://domain.ru на https://domain.ru:
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
Третий способ выполняет аналогичную функцию, но отключает перенаправление для robots.txt:
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
В 4-й версии конечным пунктом для пользователя станет https://www.domain.ru:
RewriteRule ^(.*)$ https://www.domain.ru/$1 [R=301,L]
Позволяет сделать форвардинг с http://www.poddomen.domain.ru на https://poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ https://poddomen.domain.ru/$1 [R=301,L]
Последняя версия, дающая возможность сделать связь между http://poddomen.domain.ru на https://www.poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ https://www.poddomain.domain.ru/$1 [R=301,L]
301 редирект с домена без WWW на с WWW
В функции ниже осуществляется переход из www.poddomen.domain.ru на poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]
Если же первый способ не помог можно использовать данную версию:
RewriteCond %
RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]
С www на без WWW
RewriteCond %
RewriteRule ^(.*)$ http://www.poddomen.domain.ru/$1 [R=301,L]
Также имеется второй метод не требующий ввода доменного имени:
C https на http
При необходимости сделать обратную интеграцию и перейти на незащищенную версию протокола можно воспользоваться:
301 редирект на http для одной страницы
В этой ситуации подойдет:
Второй метод осуществляет общий переезд на защищенный протокол (https), но одна страница останется на старом протоколе (http). Этот способ подойдет для интеграции 1С Bitrix с 1С Предприятие, так как система не может работать с защищенным протоколом:
Для готовой интеграции с 1С-Битрикс, формула позволяющая исключить директорию bitrix/admin/1c_exchange.php из общего правила:
RewriteCond %
Форвардинг на https для конкретной страницы
Для этой цели можно воспользоваться:
RewriteCond %
С несуществующего файла
В этом случае можно будет применить:
RewriteRule ^(.*)$ /poddomen/script.php [R=301,L]
Также подойдет второй способ:
RewriteCond %
RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]
Перенаправление на подкаталог
В этом случае возможно пербрасывать пользователей с poddomen.domain.ru на подкаталог poddomen.
RewriteEngine on
RewriteBase /
RewriteCond %
RewriteCond %
RewriteRule ^index.php(.*)$ /poddomen/$1 [L,QSA]
RewriteEngine on
RewriteBase /
RewriteCond %
RewriteCond %
RewriteRule ^(.*)$ /poddomen/$1 [L]
В случае, когда речь идет о www.poddomen.doamin.ru необходимо применить:
RewriteRule ^(.*)$ /poddomen/$1 [L]
С любой страницы на главную
RewriteRule ^(.*)$ index.php [L,QSA]
С поддомена на основной домен
Если требуется выполнить условие для всех поддоменов без исключения:
RewriteCond %
RewriteRule (.*) http://site.ru/$1?region=%1 [L,R=301,QSA]
Когда речь идет о конкретном поддомене следует использовать:
301 редирект может быть серверным или браузерным, последний из них пользуется меньшей популярностью, так как приводит к замедленной подгрузке страниц.
Код состояния HTTP 301 – ответ сервера на запрос браузера пользователя или поисковой системы, означающий, что запрашиваемая страница, более не доступная по текущему адресу, перемещена постоянно на новый, прежний URL является неактуальным, а вес с него переносится на новый адрес.
Для чего нужен 301 редирект
Корректная настройка 301 редиректа особенно важна с точки зрения SEO. Именно она помогает показать поисковой системе что, например, сайт сменил домен либо текущая страница переехала на новый адрес, а, значит, необходимо передать вес со старых URL и обновить старые URL на новые в поисковой выдаче.
Когда необходим редирект
Ниже обозначим основные наиболее актуальные для настройки 301 редиректа ситуации.
В случае переезда сайта на новый адрес необходимо настроить постраничный редирект между главными страницами, а также листингами и карточками, чтобы страницы oldsite.ru перенаправляли пользователей и робота на newsite.ru.
Переадресация должна выполняться со всех адресов старого домена на аналогичные страницы нового домена.
В данном случае необходимо перенаправлять пользователей со страниц с незащищенным протоколом http на страницы с защищенным протоколом https.
Такая необходимость может возникнуть в нескольких случаях – смена CMS, смена урловой структуры на сайте и т.д.
Таким образом, необходимо отправить пользователей с site.ru/page1/ на site.ru/catalog/page1/.
Такая необходимость появляется, например, если вы хотите отделить какое-либо направление своего сайта в отдельное.
Например, вебмастер покупает домены site.com, site.ru, site.net, site.org и site.biz и на четырех последних сайтах настраивает редирект на основной – site.com.
Наличие дублей может существенно подорвать вашу стратегию продвижения и привести к понижению в ранжировании в поисковых системах. В случае, если в индексе поисковых систем обнаружены дубликаты продвигаемых страниц, настройка переадресации – лучший выход.
Основные правила настройки переадресации
Основные способы настройки редиректов
Например в 1C-Битрикс существует множество модулей, таких как SEO Редиректы.
Для других CMS также можно установить модули. Вот некоторые ссылки на модули для распространенных CMS: Opencart, WordPress, Webasyst.
header(‘HTTP/1.1 301 Moved Permanently’);
Например, rewrite ^https://$host$request_uri? ;
$host – имя хоста из запроса, если отсутствует – имя в поле «Host» заголовка, если тоже отсутствует – имя сервера;
$request_uri – первоначальный запрос с аргументами (все, что идет после доменного имени).
могут иметь следующие параметры:
permanent – перенаправление с кодом 301,
redirect – перенаправить с кодом 302,
last – закончить обработку с переходом в новый location,
break – закончить обработку и остаться в текущем location.
Все возможные правила переадресаций для разных задач
Мы постарались подобрать самые часто используемые правила перенаправления. Если вдруг какое-то правило перенаправления не сработает на вашем сайте, попробуйте альтернативное из нашего списка. Стоит учесть, что не все представленные правила могут работать корректно при той или иной настройке сервера либо с той или иной CMS.
Склейка зеркал сайта (www и без www)
301 редирект с www на без www (главное зеркало – домен без www):
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
301 редирект с без www на www (главное зеркало – домен с www):
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
Редирект с http на https
Если данная конструкция не сработает, попробуйте другой вариант:
Если циклическое перенаправление на страницах осталось, попробуйте такой вариант:
Если редирект не работает и в этом случае, попробуйте такой вариант:
Бывают случаи, когда необходимо провести редирект на https всех страниц, кроме одной. Тогда используйте следующую конструкцию:
Для одной страницы
Для редиректа с http на https одной страницы (например page.php), в файл добавьте следующее:
Редирект с https на http
Если необходимо сделать 301 редирект всего сайта с https на http, в файл прописывается следующее:
RewriteRule ^(.*)$ https://name.site/$1 [R=301,L]
Редирект с двух последовательных слешей на один
Если необходимо сделать 301 редирект для устранения двух или множества последовательных слешей и заменить их одним в URL, то прописывается следующее:
Редирект со страниц со слешем на без слеша (для всего сайта)
RewriteRule ^(.*)\/$ /$1 [R=301,L]
Или более короткий вариант:
RewriteRule ^(. )/$ /$1 [R=301,L]
Редирект со страниц без слеша на слеш (для всего сайта)
Обратный вариант применяется, когда нужно использовать адреса со слешем.
Один 301 редирект (а не два последовательных!) на без www и со слешем на конце адреса страницы
RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]
Один 301 редирект (а не два последовательных!) на c www и со слешем на конце адреса страницы
RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]
RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
Один 301 редирект (а не два последовательных!) на c www и без слеша на конце адреса страницы
Потратив достаточно долгое время на поиски готового скрипта, пришлось констатировать тот факт, что либо все это работает не совсем правильно, либо вообще не работает.
Теперь я знаю как это сделать и сейчас покажу на примерах. Для начала сделаем поддомены на свежем сайте, т.е. готовой структуры пока нет и можно делать все что угодно.
Теперь подробно остановимся на каждом пункте.
Для запуска mod_rewrite используется команда RewriteEngine on, если ее закомментировать, то весь код перестанет работать, часто это бывает очень полезно.
RewriteBase указывает на использование текущей папки.
RewriteCond устанавливает правила, в зависимости от которых будет или не будет произведена замена адреса. В первом случае проверяется является ли поддомен с названием www, естественно его перенаправлять не нужно, поэтому перед строкой стоит восклицательный знак, обозначая отрицание. В скобках указано com|ru, используется только если вы имеете два одинаковых домена в разных зонах и они являются псевдонимами (алиасам) другу друга. Если вы используете один сайт, то запись будет такой:
Во втором RewriteCond проверяется наличие в имени адреса поддомена, причем работать будет одинаково с www и без него, т.е. сайты www.forum.domain.com и forum.domain.com будут обрабатываться одинаково.
Третье условие используется для проверки уже исправленного адреса, т.к. mod_rewrite выполняется пока условия перестанут подходить. Итак мы проверяем в строке запроса (URI, то что идет после имени домена, например /info.html) наличие папки куда мы перенаправили запрос, в данном случае это sub, перед ним стоит восклицательный знак, который сообщает, что условие не должно выполняться при наличии такой подстроки.
И наконец само правило преобразования адреса RewriteRule. В нем мы заменяем строку запроса на новый адрес:
sub + второй найденный элемент (условие RewriteCond %
Перед запуском этого скрипта вам необходимо создать в папке sub необходимые вам папки поддоменов.
Лучше воздержаться от использования в качестве метки и основной папки простое слово типа sub, т.к. оно может оказаться в адресе страницы, лучше использовать произвольный набор символов.
Бывают ситуации, когда необходимо использовать два разных адреса для одной и той же папки, например:
domain.com/forum/
и
forum.domain.com
В данном случае у нас на сервере уже есть папка forum, и полностью копировать ее еще и в папку sub не очень удобно и не совсем правильно. Найденный вариант использования mod_rewrite не совсем универсальный, но все позволяет обслужить конечное число поддоменов:
Настройка услуги «Перенаправление домена»
Услуга «Перенаправление домена» позволяет настроить правила и перенаправлять посетителя, обратившегося к доменному имени, на указанный вами интернет-адрес. Услуга поддерживает работу с любыми доменами. Заказать услугу «Перенаправление домена».
В этой статье мы расскажем о настройках для работы с услугой.
Настройка домена
Также вы можете самостоятельно указать DNS-серверы в зависимости от уровня домена, для которого заказана услуга перенаправления:
Записи в файл зоны
Если вы используете DNS-сервера, включенные в услугу «Перенаправление домена», то необходимые записи вносятся автоматически.
При использовании своих DNS-серверов нужно внести в файл зоны домена на первичном DNS-сервере (primary) записи A. В рамках одной услуги перенаправления для самого домена и любого из его поддоменов необходимо указывать один и тот же IP-адрес.
Настройка услуги «Перенаправление домена»
Перенаправление можно включить для домена, всех его поддоменов, а также настроить до десяти индивидуальных правил перенаправления для конкретных поддоменов. Перенаправление возможно только при обращении к домену по протоколу HTTP, использование «https://» возможно только в адресе, на который будет осуществляться перенаправление.
Внести изменения в настройки услуги вы можете в Разделе для клиентов → Услуги → Просмотр и изменение данных.
Для каждого правила перенаправления можно указать следующие параметры:
1. Имя поддомена, для которого настраивается правило
2. Адрес перенаправления
URL страницы, на которую автоматически будет перенаправлен посетитель.
3. Способ перенаправления
Вы можете выбрать один из следующих способов перенаправления:
Временное перенаправление (код HTTP ответа «302 Moved Temporarily»). Код ответа HTTP 302 сообщает клиентским приложениям (в том числе поисковым системам), что сайт перемещен временно. Устанавливается по умолчанию.
Постоянное перенаправление (код HTTP ответа «301 Moved Permanently»). Код ответа HTTP 301 говорит клиентским приложениям (в том числе поисковым системам), что сайт перемещен навсегда.
В обоих случаях посетитель автоматически переходит на URL той страницы, на которую было осуществлено перенаправление. Выбор способа перенаправления (301, 302) на практике имеет значение только для поисковых систем.
При таком способе перенаправления веб-страница будет находиться внутри фрейма. При всех переходах по ссылкам внутри фрейма в адресной строке браузера посетители будут видеть доменное имя, с которого была осуществлена переадресация. В качестве заголовка (title) страницы будет отображаться текст, указанный вами в настройках правила перенаправления.
Если вы выбрали маскировку адреса во фрейме, то следует учитывать, что:
4. Опция «С сохранением пути».