使用mod_rewrite时如何获得实际请求

时间:2011-11-30 02:00:45

标签: apache .htaccess mod-rewrite

我想知道如何在使用mod_Rewrite时获取“真实”请求的U​​RL。我的htaccess文件中有几个重写规则用于缓存:首先是检查,如果存在缓存文件。如果是,则将请求重写到缓存文件。否则,请求将被重写为php脚本,从而创建此缓存文件。

但我怀疑,这些规则并不像我希望的那样。是否有可能跟踪“真实”请求,以查看客户端请求的URL以及后台请求的文件?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可能需要%{THE_REQUEST}特殊变量。 mod_rewrite docs说出这个:

  

浏览器向服务器发送的完整HTTP请求行(例如,“GET /index.html HTTP / 1.1”)。这不包括浏览器发送的任何其他标头。与以下大多数其他变量不同,此值尚未转义(解码)。

因此,如果有人在浏览器中输入http://your-domain/path/file.html并且您的网络服务器将 /path/file.html 重写为完全不同的内容,那么%{THE_REQUEST}变量仍为{{1}或类似的东西。

至于请求最终被重写的内容,您可以打开日志记录进行重写以查看它是什么:

GET /path/file.html HTTP/1.1

这将在您的虚拟主机配置中进行,仅用于调试目的。 rewrite.log文件将包含有关重写过程以及最终URI的详细信息。