mod_rewrite有两个主要问题:
1)当我的规则无效时,报告没有有意义的错误
2)为了可靠地测试每个修改,我必须擦除chrome的缓存。这不是火箭科学,但我必须按Ctrl + Shift + Delete然后单击确定,然后关闭窗口,然后重新加载。
我想看看是否有任何大师愿意分享他们的秘密来有效管理mod_rewrite代码。
答案 0 :(得分:254)
一个技巧是打开重写日志。要打开它,请在apache主配置或当前虚拟主机文件中尝试以下这些行(不是在.htaccess
中):
RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
由于Apache httpd 2.4 mod_rewrite RewriteLog和RewriteLogLevel指令已完全被新的每模块日志记录配置所取代。
LogLevel alert rewrite:trace6
答案 1 :(得分:117)
Ben提到的LogRewrite指令在Apache 2.4中不再可用。 您需要使用LogLevel指令。 E.g。
LogLevel alert rewrite:trace6
请参阅http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
答案 2 :(得分:23)
对于基本URL解析,请使用命令行提取程序(如wget
或curl
)进行测试,而不是手动浏览器。然后你不必清除任何缓存;只需向上箭头并在shell中输入即可重新运行测试提取。
答案 3 :(得分:10)
它显示了针对某个URL测试了哪些条件,哪些条件符合标准以及哪些规则已执行。
但是,似乎有一些小问题。答案 4 :(得分:3)
基于Ben's answer,您可以在Linux上运行apache时执行以下操作(在我的情况下是Debian)。
首先创建文件rewrite-log.load
/etc/apache2/mods-availabe/rewrite-log.load
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
然后输入
$ a2enmod rewrite-log
接着是
$ service apache2 restart
当你完成重写规则时
$ a2dismod rewrite-log&& service apache2 restart