понедельник, января 20, 2014

Разделение сиамских близнецов с помощью .htaccess

Вот ещё было: делал сайт (по субподряду, поэтому - без ссылки). У сайта, как водится, есть нормальное доменное имя и техническое. По недогляду СЕОшников подрядчика технический домен утёк в Гуглояндексы и стал выдаваться лучше нормального.

Написал в .htaccess правило переадресации: если домен не такой-то, ответить 301 на домен такой-то с тем же запросом. Но оно не заработало.

Почитав phpinfo(), увидел, что конкретный хостинг-провайдер обслуживает оба домена через прокси, перезаписывающий заголовки. И все запросы на сайт приходят с правильным доменом, несмотря на то, что клиент работает с неправильным.

После минуты паники ещё раз просмотрел переменные окружения Апача в том и ином случае и переписал правило:

RewriteCond %{HTTP:X-FORWARDED-FOR} ^ай.пи.прокси.провайдера [NC]
RewriteRule ^(.*)$ http://правильный.сайт/$1 [L,R=301] 

Правило эксплуатирует особенность настройки конкретного хостера: при обращении на нормальный домен X-Forwarded-For содержит, как и положено, айпи клиента, а при обращении на технический - айпи прокси, адрес клиента указывается отдельно в X-Real-IP.

Заодно это постфактум объяснило, почему злостно глючил логин в админку сайта при входе по техническому домену: в браузер приходили куки для неправильного домена.

Комментариев нет:

Поиск по этому блогу