Назад | Перейти на главную страницу

.htaccess перенаправление без сохранения заголовка http_referer

Мы объединяемся с другой компанией и хотим перенаправить контент с их (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 позаботится о перенаправлении на сайт, на который он должен попасть.