.htaccess 重定向不保留 http_referer 标头

.htaccess 重定向不保留 http_referer 标头

我们正在与另一家公司合并,我们希望将内容从他们的 (Apache) 网站重定向到我们的 (IIS) 网站。当流量到达我们的网站时,我们会检查 HTTP_REFERER,如果访问者刚刚从我们刚刚合并的公司网站重定向,他们就会看到一个“闪屏”页面,宣布合并。

我已添加此行...

重定向 /http://www.oursite.com/

...到他们的.htaccess,工作正常,只是当浏览器重定向时它不会发送HTTP_REFERER标头。

我尝试使用重定向代码 301、302 和 307 进行重定向(我认为默认值是 302),并且都具有相同的效果(重定向正常,但没有 HTTP_REFERER)。

有人能解释一下为什么不包括 HTTP_REFERER 吗?

答案1

RFC 没有在状态 301 定义中指定任何特定于 referrer 的行为,也没有在 Referer 标头定义中指定 301 的行为。因此,我不得不说,尽管这种 referrer 保留行为是合乎逻辑的,但它并未在 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 将负责重定向到它需要命中的站点。

相关内容