我有两个主要的问题与mod_rewrite:
当我有一个无效的规则时没有报告有意义的错误
我想看看是否有专家愿意分享他们有效管理mod_rewrite代码的秘诀。
一个技巧是打开重写日志。要打开它,请在Apache HTTP Server主配置或当前虚拟主机文件(不 in .htaccess)中尝试这一行:
.htaccess
LogLevel alert rewrite:trace6
在Apache HTTPD 2.4 mod_rewrite之前,这样的每个模块日志记录配置还不存在。相反,你可以使用以下日志设置:
RewriteEngine On RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 3
对于基本的URL解析,使用命令行获取器(如wget或curl)来进行测试,而不是手动浏览器。这样你就不需要清空缓存;只需要向上箭头键并在shell中按输入就可以重新运行测试取回。
wget
curl
RewriteLog指令Ben提到的在Apache 2.4中不再可用。
您需要使用LogLevel指令。例如,
看到Apache Module mod_rewrite, Logging。
基于本的回答,你可以在Linux(在我的例子中是Debian)上运行Apache时执行以下操作。
首先创建文件rewrite-log.load。
/etc/apache2/mods-availabe / rewrite-log.load
RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 3
然后输入
$ a2enmod重写日志
紧随其后的是
$ service apache2 restart
当您完成调试重写规则时,
$ a2dismod重写日志&&Service apache2 restart
这是htaccess测试仪。
它显示了针对某个URL测试了哪些条件,哪些条件满足标准,以及执行了哪些规则。
不过,它似乎有一些故障。