维护HTTP Referer

时间:2010-01-15 16:06:10

标签: apache redirect http-referer

我在Apache服务器上设置了一些重定向。他们看起来像这样:

重定向/名称/注册/login.html

我的问题是这个...无论如何都要通过此重定向保留HTTP Referrer?似乎默认情况下,Apache会丢弃这些信息。如果重定向完成后推荐人说:

,我真的很喜欢

http://the.orginalurl.com/Name/register

任何人,如果这是可能的?如果没有,请考虑替代方案。

非常感谢, 尼尔

5 个答案:

答案 0 :(得分:6)

Redirect将不会保留引荐来源,因为浏览器会被发送301和新地址以便打开。来自manual

  

Redirect指令通过要求客户端在新位置重新获取资源,将旧URL映射为新URL。

mod_rewrite和(我认为)Alias可以直接重写(即不会导致浏览器重定向)并保留引荐来源。使用mod_rewrite,如果需要,您甚至可以将referer作为GET参数添加到您的请求中。

答案 1 :(得分:1)

这是一个浏览器问题,而不是apache。你无能为力。这样做是为了防止某些安全问题和引用垃圾邮件。

http://en.wikipedia.org/wiki/HTTP_referrer#Referrer_hiding

答案 2 :(得分:1)

您始终可以在请求开始时将原始引荐来源存储在管道变量中,而只需将其从那里拉出来。

答案 3 :(得分:1)

我创建了一种通过301重定向传输refferer的替代方法。 https://webmasters.stackexchange.com/questions/4665/

答案 4 :(得分:0)

我相信一切都取决于你如何写规则。 它可以根据您提供的标记充当“重定向”或“重写”。

1。重定向

302将被发送到浏览器,它将发起另一个请求(请参阅Firebug并启用“persist”选项):

RewriteCond %{REQUEST_URI} !/index.html
RewriteRule ^(.*)$ /index.html [R=302,L]

2。重写

浏览器不会启动302重定向,因为我们不发送此类标头,但它会掩盖内容:

RewriteCond %{REQUEST_URI} !/index.html
RewriteRule ^(.*)$ /index.html [L]

在此选项中,如果有人访问“page.html”,他会看到“index.html”的内容不是“page.html”,但上面的网址仍会显示“page.html”

适用于维护页面等......不确定登录页面......但这是另一种思考方式。

在我的特定情况下,“RewriteRule”与“Alias”之间的主要区别在于,重写可以在.htaccess中设置,而“别名”不是......所以并不总是可以使用Alias ... < / p>