2011-11-28 119 views
0

我想捕获reforation url或完整的html链接 即“(http.bbserver.edu/john_doe/quiz.doc)” 并将其发送给PHP脚本。使用mod_rewrite RewriteRule将引用者传递到查询字符串

我知道了小幅具有以下

REWRITERULE ([^/]+)/([^/]+)$ login.php?referer=%{HTTP_REFERER}&path=$0&folder=$1&file=$2 [NC,L] 

但PHP文件打印出这

Referer: 
path: John_Doe/quiz.doc 
folder: John_Doe/quiz.doc 
file: quiz.doc 

如果我试试这个,试图得到一切,并将其发送到PHP脚本。

REWRITERULE ^(.+)$ login.php?referer=%{HTTP_REFERER}&path=$0&folder=$1&file=$2 [NC,L] 

但是php文件打印出来了。

Referer: 
path: login.php 
folder: login.php 
file: 

我想捕获“HTTP_REFERER”并通过php解析子文件夹和文件。 但我没有得到我需要的信息。

+0

因为一起使用这与[赫利ISAPI重写3](http://www.helicontech.com/isapi_rewrite/doc/RewriteCond.htm),当我跌倒在这里也只是一个快速的注意:不是'%{ HTTP_REFERER}'它存在'%{HTTP:Referer}'。 –

回答

0

你肯定HTTP_REFERER被设置?通常情况下,如果您位于HTTP代理的后面,则不会。尝试打印的$_SERVER['HTTP_REFERER']的价值,这也应该包含HTTP引用的值如果被设置。

如果您位于代理的后面,并且需要引用者,则可以使用mod_rpaf,并从HTTP_X_FORWARDED_FOR获取引用者。

+0

我给我们打了电话。部门,我们不在HTTP代理之后。我在PHP脚本中打印这个值,它是空的。我需要启用任何东西吗? – David

+0

不在Apache,AFAICT。但它取决于客户端:浏览器可以选择不发送Referer:头,以提高用户的隐私。如果您只使用一个浏览器进行测试,请检查该浏览器中的隐私设置,或尝试使用其他浏览器和/或不同的客户端主机。 –

+0

另外我创建了一个虚拟主机并将重写规则保存在我们的.conf文件中。虚拟主机是否也会导致问题。另外有没有其他的方法来获得没有mod_rewrite的引用者? – David