REDZ.Projects - Сообщения с тегом "301"

  • Архив

    «   Январь 2024   »
    Пн Вт Ср Чт Пт Сб Вс
    1 2 3 4 5 6 7
    8 9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30 31        

Перенаправления с сайта на сайт

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

Пример задачи: есть домен 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]
мы перечисляем домены, с которых ждем посетителей. В нашем примере мы прослушиваем домены mydomain.com и domain.com и перенаправляем с них посетителей на домен www.domain.ru.
Для 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: Еще вариант, если нужно с www.domain.ru перейти на domain.ru:
RewriteCond %{HTTP_HOST} ^www.domain\.ru$ [NC]
RewriteRule ^(.*)$ http://domain\.ru/$1 [R=301,L]



Выбор за вами, благо он есть!