
Пример задачи: есть домен mydomain.com, разумеется он есть в Яндексе и не плохо там раскручен.
Появляется второй, более интересный домен, скажем domain.ru
Разумеется сайт для обоих доменов один.
Как заставить скрипт определять, на нужный ли домен зашел посетитель? А в случае, если посетите зашел на новый домен сам, как сделать чтобы редирект не срабатывал?
Решим эту задачу не средствами скриптов, а глобально, на уровне веб-сервера Apache, с подключенным модулем mod_rewrite.
В файл .htaccess в корне сайта прописываем:
Код
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC] RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] RewriteRule ^(.*)$ http://www.domain.ru/$1 [R=301,L] |
Правилами
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC] RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] |
Для SEO очень важно, что поисковым системам мы выдаем 301 редирект.
Метод очень хороший, глобальный и не вызывает у поисковых систем аллергию.
Однако в процессе обсуждения задачи с коллегами по 1С-Битрикс были найдены новые методы:
RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,QSA,L] |
Плюсы очевидны:
1) Не надо прописывать имена доменов - то бишь универсальна.
2) Учитывает наличие путей или параметров после URL и передаёт их при редиректе.
RewriteEngine On RewriteCond %{HTTP_HOST} !^www.domain.ru$ RewriteRule ^(.*)$ http://www.domain.ru$1 [R,L] |
на тот случай, если наберут ww.domain.ru или wwww.domain.ru
UpDate: Еще вариант, если нужно с
RewriteCond %{HTTP_HOST} ^www.domain\.ru$ [NC] RewriteRule ^(.*)$ http://domain\.ru/$1 [R=301,L] |
Выбор за вами, благо он есть!