Mod rewrite 使用mod_rewrite rewrite规则将引用传递到查询字符串

Mod rewrite 使用mod_rewrite rewrite规则将引用传递到查询字符串,mod-rewrite,apache2,Mod Rewrite,Apache2,我正在尝试捕获反驳url或完整的html链接 i、 (http.bbserver.edu/john_doe/quick.doc) 并将其发送到php脚本 REWRITERULE ^(.+)$ login.php?referer=%{HTTP_REFERER}&path=$0&folder=$1&file=$2 [NC,L] 我已经让它稍微与下面的工作 REWRITERULE ([^/]+)/([^/]+)$ login.php?referer=%{HTTP_REFERE

我正在尝试捕获反驳url或完整的html链接 i、 (http.bbserver.edu/john_doe/quick.doc) 并将其发送到php脚本

REWRITERULE ^(.+)$ login.php?referer=%{HTTP_REFERER}&path=$0&folder=$1&file=$2 [NC,L]
我已经让它稍微与下面的工作

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解析子文件夹和文件。
但是我没有得到我需要的信息。

你确定设置了HTTP\u REFERER吗?通常情况下,如果您使用HTTP代理,情况就不会如此。尝试打印
$\u服务器['HTTP\u REFERER']
的值,如果设置了该值,则该值还应包含HTTP REFERER的值


如果您支持代理,并且需要推荐人,您可以使用,并从HTTP_X_FORWARDED_获取推荐人。

我打电话给我们的IT部门,但我们不支持HTTP代理。我在PHP脚本中打印该值,它是空的。我需要启用什么吗?不需要在Apache、AFAICT中启用。但这取决于客户端:浏览器可以选择不发送Referer:header,以改善用户的隐私。如果您只使用一个浏览器进行测试,请检查该浏览器中的隐私设置,或者尝试其他浏览器和/或其他客户端主机。此外,我还创建了一个虚拟主机,并将重写规则保存在.conf文件中。虚拟主机也可能导致问题。另外,有没有其他方法可以在不重写mod_的情况下获取referer?虚拟主机并不重要。在PHP中,您可以在中获取所有重要的服务器变量。请尝试使用
curl-v
获取页面,这样您就可以看到正在发送的标题。这将向您显示是否发送了
Referer:
,以及结果是什么。由于我在这里也遇到了问题,因此,在将此与:一起使用时,只需做一个简短的说明:它不是
%{HTTP\u Referer}
而是
%{HTTP:Referer}