Мы объединяемся с другой компанией и хотим перенаправить контент с их (Apache) веб-сайта на наш (IIS) сайт. Когда на наш сайт приходит трафик, мы проверяем HTTP_REFERER, и если посетитель был только что перенаправлен с сайта компании, с которой мы только что слились, ему будет представлена всплывающая страница, объявляющая о слиянии.
Я добавил строку ...
Перенаправление / http://www.oursite.com/
... в их .htaccess, который работает нормально, за исключением того, что при перенаправлении браузера он не отправляет заголовок HTTP_REFERER.
Я пробовал перенаправлять с кодами перенаправления 301, 302 и 307 (я полагаю, что по умолчанию 302), и все они имеют одинаковый эффект (перенаправляет нормально, но не HTTP_REFERER).
Может ли кто-нибудь дать некоторое представление о том, почему HTTP_REFERER не был включен?
RFC не определяет поведение, зависящее от реферера, в определении статуса 301 и поведение, специфичное для 301, в определении заголовка Referer. Таким образом, я должен сказать, что, хотя такое поведение с сохранением рефереров логично, оно не определено в RFC, и поэтому вы никогда не можете быть уверены.
Короче говоря, я не верю, что вы сможете выполнить это с помощью перенаправления или mod_rewrite.
Лучше всего создать простой PHP-код для перенаправления пользователя, который будет поддерживать HTTP_REFERER.
Поместите файл с именем index.php в корень вашего домена со следующим содержимым:
<?php
header( 'Location: http://www.oursite.com/' ) ;
?>
Создайте .htaccess и поместите его в корневой каталог вашего домена со следующим содержимым:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule . index.php
Файл .htaccess позаботится о том, чтобы все, что было введено для доступа к вашему домену, попало в index.php, а index.php позаботится о перенаправлении на сайт, на который он должен попасть.