Периодически, к нам обращаются наши клиенты, с вопросом, как сделать переадресацию сайта с одного домена на другой. Как правило, этот вопрос задают в двух вариантах:
сайт открывается по 2 адресам: www.mysite.ua и mysite.ua (для поисковых машин это существенная разница и они воспринимают 2 адреса, как 2 разных сайта), поэтому необходимо сделать чтобы при обращении к страницам сайта с www, шла переадресация на такие же страницы сайт без www, например с http://my site.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 .(.+)$ RewriteRule ^(.*)$ http://%1/$11.2. С основного домена на www-домен
RewriteEngine On RewriteCond %{HTTP_HOST} !^( www .) RewriteRule ^(.*)$ http:// www .%{HTTP_HOST}/$11.3. С одного домена на другой
Задача может быть решена так же как и первая, для настройки перенаправления посетителей с одного доменного domain1.ua имени на другое domain2.ua вы можете использовать соответствующие директивы в файле .htaccess .
Сделать на старом домене domain1.ua файл.htaccess, с содержанием:
RewriteEngine On RewriteCond %{HTTP_HOST} domain1. ua RewriteRule (.*) http:// domain2. ua /$11.4. Перенаправление с нескольких доменов
Необходимо сделать переадрессацию с доменов domain1.ua и www.domain1.ua на новый домен domain2.ua , для это впишите:
RewriteCond %{HTTP_HOST} ^ domaim1 \. ua RewriteRule ^(.*)$ http:// domain2.ua /$1 RewriteCond %{HTTP_HOST} ^www. domain1 \. ua RewriteRule ^(.*)$ http:// domain2.ua /$1Аналогично можно делать перенапрвление с 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) становится , его-то мы и вписываем в уже знакомый код
RewriteEngine On RewriteCond %{HTTP_HOST} http://xn--80arbjktj.xn--j1amh/ RewriteRule (.*) http:// domain2. ua /$1или в соответствующую строку в панели управления.
Последнее обновление Ноябрь 26th, 2018
Время чтения: 2 минуты301 редирект (301 Moved Permanently) — это перенаправление пользователя с одной страницы (url) на другую.
Зачем нужен 301 редирект
- передача ссылочного веса
- правильное избавление от старых страниц
- сохранение позиций (полное или частичное) при смене урлов
- избавление от дублей внутри сайта (если такое есть)
- переезд сайта на новый домен или протокол HTTPS
- склейка доменов
Как сделать 301 редирект с помощью файла.htaccess?
Примеры будем рассматривать на сайте вида site.ru
Склейка домена с www с вариантом без
Для поисковых систем site.ru и www.site.ru — это два разных домена. Если у вас не настроена переадресация с одной версии домена на другую, в выдаче поисковых систем могут появиться дубли страниц. При базовой технической оптимизации в файле прописывается обязательное правило с указанием главного зеркала сайта, но также для подстраховки необходимо настроить и редиректы. Это не будет лишним точно.
Настраиваем редирект с http://www.site.ru на site.ru. Здесь главное зеркало сайта это http://site.ru
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1
301 редирект при переезде на HTTPS
Поисковые системы в последние годы обозначили тренд на безопасность и рекомендуют всем вебмастерам переводить сайты на защищенный протокол https
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1
Если нужно сделать наоборот:
RewriteCond %{HTTPS} «on»
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}
Стандартная переадресация с одной статической страницы на другую
Часто бывает, что на сайте какие-либо страницы устаревают, становятся неактуальными или просто вебмастеру необходимо привести урл страницы к ЧПУ виду.
Например, нужно настроить 301 редирект со страницы http://www.site.ru/page1/ на страницу http://www.site.ru/prodvizhenie-saytov/
RewriteCond %{REQUEST_URI} ^/page1/ $
RewriteRule ^.*$http://www.site.ru/prodvizhenie-saytov/ ?
301-редирект с домена на домен
Иногда бывают ситуации, когда необходимо настроить редиректы с одного домена на другой. Например, у вас был молодой, не трастовый домен, а со временем появился откуда-то прокачанный, трастовый (купили может). Или владельцу сайта надоело старое название домена и резко захотелось его поменять на другое.
Для полной передачи веса с одного домена на другой одних редиректов будет не достаточно, но об этом не в этой статье.
RewriteCond %{HTTP_HOST} ^old-site\.ru$
RewriteRule ^(.*)$ http://www.newsite.ru/$1
Если ваш домен находится в зоне РФ
RewriteCond %{HTTP_HOST} ^xn-…\.xn--p1ai$
RewriteRule ^(.*)$ http://www.site.ru/$1
Переадресация на папки со слешем в конце /
Иногда на сайтах встречаются дубли страниц вида http://www.site.ru/prodvizhenie-saytov/ и http://www.site.ru/prodvizhenie-saytov
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.site.ru/$1/
Перенаправление с индексной страницы php (index.php) на саму папку (корень)
Иногда у сайтов может появляться «технический мусор» из-за особенностей админки или каких-либо других причин. Например, главная страница сайта бывает часто доступна по адресу вида http://www.site.ru/index.php и может присутствовать в индексе поисковых систем, мешая ранжированию главной страницы в поисковой выдаче.
RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.ru/
Для всех индексных страниц на сайте:
RewriteRule ^(.*)index\.php$ http://www.site.ru/$1
301 редирект с поддомена на основной домен
RewriteCond %{HTTP_HOST} ^test.site.ru$
RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI}
Эта статья устарела.
Эта статья написана для услуги Виртуальный хостинг, которая считается устаревшей с 1 июня 2019 года.
Актуальную услугу хостинга можно заказать на нашем сайте
Переадресация с одного домена на другой (редиректоры)
Периодически к нам обращаются наши клиенты с одним и тем же вопросом: как сделать переадресацию с одного доменного имени на другое. Как правило, вопросы сводится к одному из двух вариантов:
- Ваш сайт открывается по адресу www.mycompany.ru и mycompany.ru. Вы хотите, чтобы при обращении к адресу сайта с www шла переадресация на ту же страницу на домене без www (http://www.mycompany.ru/news/ » http://mycompany.ru/news/)
- У вас есть основной домен mycompany.ru и альтернативный my-company.ru. Нужно сделать чтобы при наборе в браузере адреса my-company.ru посетитель автоматически переводился на основной домен mycompany.ru
Первая задача наиболее простым способом решается в разделе . Слева от названия сайта необходимо кликнуть на иконку с тремя горизонтальными полосками и выбрать "Тонкие настройки". Далее активировать "Включить перенаправление". После этого остается выбрать на какой домен необходимо перенаправлять все запросы. Готово!
Показать как можно решить первую задачу при помощи mod_rewrite
Также первую задачу можно решить с помощью mod_rewrite . Чтобы настроить переадресацию с адресов, начинающихся с www на аналогичные без www (http://www.mycompany.ru/news/ » http://mycompany.ru/news/), нужно в файл.htaccess в корневой папке www вашего сайта прописать следующие строки:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.mycompany\.ru$ RewriteRule ^(.*)$ http://mycompany.ru/$1
Если вам наоборот нужно чтобы адреса без www автоматически переадресовывались на те же адреса с www (http://mycompany.ru/news/ » http://www.mycompany.ru/news/), например как сделано на нашем сайте: автоматически переадресует вас на , то правила mod_rewrite выглядят следующим образом:
RewriteEngine On RewriteCond %{HTTP_HOST} ^mycompany\.ru$ RewriteRule ^(.*)$ http://www.mycompany.ru/$1
Вторая задача может быть решена также при помощи правил mod_rewrite , но если вы размещаетесь на тарифном плане Лайт, Стандарт или Профи, то ограничены числом доменов, включенных в тариф. Поэтому настройка сайта с одним только файлом.htaccess лишит вас еще одного домена в квоте по тарифу, что не всегда приемлемо. В этом случае мы предлагаем воспользоваться сервисом .
Нужно удалить A-запись для домена my-company.ru из и затем создать . При этом для домена my-company.ru будет автоматически создана новая A-запись, которая будет указывать на сервис редиректов.
Можно ли решить первую задачу тоже с помощью сервиса Редиректоры панели? Да, можно, но это приведет к тому, что вместо переадресации http://www.mycompany.ru/news/ » http://mycompany.ru/news/ вы получите переадресацию http://www.mycompany.ru/news/ » http://mycompany.ru/, то есть любой url на переадресуемом домене будет вести только на какую-то одну конкретную страницу домена назначения. Вряд ли это то, что вам нужно.
Многие владельцы коммерческих сайтов рано или поздно задумывается про переезд на другой домен. С чем это связано (неправильный нейминг, неудачный старт, просто прихоть) — тема для отдельной статьи. А сейчас я хочу рассказать о технических деталях склейки и об ошибках, которые могут погубить всю проведенную работу и на долгое время лишить сайт органического трафика.
Как сделать редирект на другой сайт
На первый взгляд, склейка доменов — дело несложное, стоит прописать всего несколько строчек в htaccess и ожидать результатов. Но результат может быть и плачевным, если вы что-то сделаете не так и по завершению склейки не проверите все. Итак, давайте я пошагово распишу, как сделать редирект на другой сайт, допустим, что в данном случае это ваш старый и новый ресурсы, которые вы хотите склеить.
- Настройка постраничного редиректа
со старого на новый домен. Редирект прописывается в файле htaccess (корневая директория сайта на сервере) старого сайта. Вот сама директива:
RewriteCond %{HTTP_HOST} ^www\.oldsite\.com$ RewriteRule ^(.*)$ http://newsite.com/$1 RewriteCond %{HTTP_HOST} ^oldsite\.com$ RewriteRule ^(.*)$ http://newsite.com/$1
RewriteCond % { HTTP_HOST } ^ www \ . oldsite \ . com $ [ NC ]
RewriteCond % { HTTP_HOST } ^ oldsite \ . com $ [ NC ]
RewriteRule ^ (. * ) $ http : //newsite.com/$1
- После настройки основного редиректа, рекомендуется вручную проверить корректность перенаправления страниц. Сделать это несложно при помощи программы Netpeak Spider (скачать программу). После установки программы, запустите ее, и введите адрес старого сайта в строку поиска. Далее, выберите тип сканирования — по Google, и запустите сканирование. Если редирект со старого на новый домен осуществлен корректно, все найденные страницы будут отдавать код 301 (Moved Permanently).
- Далее, необходимо проверить корректность работы всех страниц с новым доменом . Для этого, используя ту же программу (Netpeak Spider), проверьте коды ответа страниц. Учтите, что теперь проверку делайте по сайту, а не по Google, как в предыдущем пункте.
- В течении 1-2 месяца после склейки, страницы старого сайта полностью выпадут из индекса и их место займут новые страницы. Поэтому, примерно через 2 месяца следует просмотреть выдачу поисковиков по новому сайту, и сопоставить данные с показателями до перенаправления. Если данные количества страниц и позиции по запросам примерно одинаковые (запросы могут просесть на некоторое время) — все сделано правильно. Также, рекомендую отслеживать количество 404-х ошибок в панели вебмастера.
Фактически, это все, что требуется сделать для склейки доменов. Однако, описанный выше способ не подойдет, если меняется не только домен, но и внутренняя структура сайта . Тогда придется придумывать костыли. Возможно, часть страниц получится перенаправить при помощи редиректов сложного перенаправления, остальные страницы придется перенаправлять вручную, при помощи директивы Redirect 301. Например, если есть старая страница siteold.com/page-old и ее надо перенаправить на страницу нового домена sitenew.com/page-new, то редирект будет выглядеть так:
Redirect 301 /page-old http://sitenew.com/page-new
Redirect 301 / page - old http : //sitenew.com/page-new |
Приписывать подобные редиректы необходимо в файле.htaccess старого сайта.
Особенности склейки доменов для Google и Яндекс
Как я писал выше, в целом процесс склейки более чем простой. Тем не менее, существуют некоторые нюансы. Например, для более быстрой склейки сайта в Google необходимо провести некоторые манипуляции в панели вебмастера (Google Webmaster Tools). Зайдите на страницу старого сайта в GWT, в правом верхнем углу кликните по шестеренке, выберите пункт «Изменение адреса», и следуя инструкции, составьте запрос на изменение адреса. Я встречал информацию, что такие действия, при условии правильного перенаправления страниц, сайт может склеиться в течение недели.
Для Яндекса специальных «фич» нет. Но хотелось бы упомянуть об одном моменте. В официальной инструкции поисковика по склейке сайтов упоминается два варианта, как это можно сделать. Первый способ — редирект на другой сайт, второй — прописывание нового зеркала в директиве Host (robots.txt). Второй способ мало того, что не универсален, так еще и займет гораздо больше времени. Некоторые специалисты рекомендуют сочетать оба варианта и исключать роботс на старом сайте из редиректов. Скажу сразу — делать это ни к чему, вполне достаточно 301-го редиректа , но пример директивы htaccess все же приведу.