2011-11-30 70 views
0

我想知道如何在使用mod_Rewrite的时候得到“真实”请求的U​​RL。在我的htaccess文件中有几个用于缓存目的的重写规则:首先检查是否存在缓存文件。如果是这样,请求将被重写到缓存文件。否则,请求将被重写为一个php-script,它创建这个缓存​​文件。如何在使用mod_rewrite的时候得到真正的请求

但我怀疑,规则不符合我希望他们。是否有可能跟踪“真实”请求查看,客户端请求了哪个URL以及后台请求哪个文件?

在此先感谢。

+0

只是一个模糊的内存......我想你可以使用mod_rewrite设置一个变量,稍后可以使用它。或者,有一个代表原始请求的内建变量。对不起,不记得清楚,但建议你阅读手册(长篇朗诵,但有帮助) – gahooa

回答

0

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

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

所以,如果有人进入http://your-domain/path/file.html到他们的浏览器,你的网络服务器重写/path/file.html成完全不同的东西,在%{} THE_REQUEST变量仍然会GET /path/file.html HTTP/1.1,或者类似的东西。

至于什么请求终于得到了改写,你可以启用日志记录改写,看看它是什么:

RewriteLog /some-path/rewrite.log 
    RewriteLogLevel 9 

这会去你的虚拟主机配置和仅用于调试目的。 rewrite.log文件将包含重写过程和最终URI的详细信息。

+0

RewriteLog听起来不错,但据我所知,没有可能通过.htaccess运行。 Unfortunatley我无法访问httpd.conf或其他配置文件。 – Phil

相关问题