如何debuggingApache mod_rewrite

我有两个与mod_rewrite的主要问题:

1)当我有一个无效的规则时没有报告有意义的错误

在这里输入图像描述

2)要可靠地testing每个修改,我必须擦除Chrome的caching。 这不是火箭科学,但我必须按Ctrl + Shift + Delete,然后单击确定,然后closures窗口,然后重新加载。

我想看看是否有任何专家愿意分享他们的秘密,有效地pipe理mod_rewrite代码。

一个窍门是打开重写日志。 要打开它,请尝试在您的apache主configuration或当前虚拟主机文件( 不在 .htaccess )这些行:

 RewriteEngine On RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 3 

由于Apache httpd 2.4 mod_rewrite RewriteLog和RewriteLogLevel指令已经被新的每个模块日志configuration完全替代。

 LogLevel alert rewrite:trace6 

Ben提到的LogRewrite指令在Apache 2.4中不再可用。 您需要使用LogLevel指令。 例如

 LogLevel alert rewrite:trace6 

请参阅http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging

对于基本的URLparsing,请使用像wgetcurl这样的命令行抓取工具来进行testing,而不是手动浏览器。 那么你不必清除任何caching; 只需向上箭头,然后在shell中input以重新运行testing提取。

有htaccesstesting器 。

它显示哪些条件testing了某个URL,哪些符合条件,哪些规则被执行。

这似乎有一些小故障,但。

根据Ben的回答 ,你可以在Linux上运行apache(在我的情况下是Debian)执行以下操作。

首先创build文件rewrite-log.load

/etc/apache2/mods-availabe/rewrite-log.load

 RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 3 

然后input

$ a2enmod rewrite-log

其次是

$ service apache2 restart

当你完成debugging你的重写规则

$ a2dismod rewrite-log && service apache2 restart