如何调试htaccess重写脚本



我想知道如何创建和调试这种脚本,如果你不习惯写它们(像我一样),它会变得有点头疼。

你使用工具来创建它们吗?

有什么提示来调试发生了什么,而不是仅仅创建一个本地结构,看看在浏览器中发生了什么?

读者注意:旧的答案不再适用

从2.4版本开始,Apache不再允许RewriteLogLevelRewriteLog指令。现在它们都与单个LogLevel指令捆绑在一起(参见日志文件文档),它支持带有前缀和trace[1-8]常量的模块特定日志级别。要专门为重写模块设置最高级别的日志记录,现在可以使用以下命令:

LogLevel warn rewrite:trace8
  1. 您可以使用任何正则表达式测试工具来帮助您测试针对url的模式(我使用的是"The regex Coach"—Windows应用程序)。这只会对你的模式有帮助——你应该已经知道了重写工作的一般逻辑/流程。

  2. DEBUG你必须能够编辑Apache配置文件——使用RewriteLogLevel 9RewriteLog /path/to/rewrite.log来查看URL重写期间发生的确切细节(因为这是一个服务器配置,你必须重新启动Apache以应用新的服务器配置)。

    如果你想调试有问题的规则,你需要级别9。第3级或任何其他相当低的值只会显示正在发生的事情的概述,而不会进入细节。

    不要在繁忙/生产服务器上使用9级,因为它可能会在几秒钟内生成大量日志。

  3. 如果你需要做301(永久)重定向-在测试期间改为302(直到你对规则和结果感到满意-然后更改为301),因为现代浏览器会缓存301重定向。因此,当您完全更改了规则(甚至删除了规则)但浏览器仍然执行重定向时,您可能会遇到令人沮丧的情况。在这种情况下,唯一的解决方法是:清空浏览器缓存并重新加载页面。

您可以在虚拟主机配置中设置RewriteLog指令它将把必要的信息写入您指定的文件。

RewriteLog "/usr/local/var/apache/logs/rewrite.log"

进一步,使用RewriteLogLevel指令来控制日志记录的数量

RewriteLogLevel 3

阅读

最新更新