【发布时间】:2011-12-10 01:14:39
【问题描述】:
这是一个“提出问题并自己回答”的案例,我发布它是为了让遇到同样问题的人受益。
我在调试共享服务器上的 .htaccess 文件中的 mod_rewrite 规则集时遇到了一些问题,我什至无法访问 Apache 错误日志。我找到了一种调试它们的巧妙方法,就是这样:
-
编写一个简短的脚本,简单地打印出它的查询字符串变量。例如在 PHP 中:
<?='<pre>',htmlentities(print_r($_GET,true)),'</pre>'?>就是你所需要的。
-
假设您将此脚本命名为“show.php”并将其放在 /public_html 中。然后在您的 .htaccess 文件中,确定您认为可能导致问题的规则集中的点,并插入此规则:
RewriteRule (.*) /show.php?url=$1 [END]
效果与在常规程序中插入 PRINT 语句相同。它会让您知道 (a) 您已到达规则集中的那个点,以及 (b) 当前重写的 URL 是什么。
它不像真正的调试工具那样闪存,但它可以完成工作。
如果您使用的是 Apache [L] 而不是 [END]。在这种情况下,需要注意的是您的规则集不应尝试将“/show.php”重写为其他任何内容。如果这是一个问题,您可以通过在最顶部添加此规则来解决它:
RewriteRule ^show.php$ - [L]
...请记住在完成调试后将其删除!
【问题讨论】:
-
更多有用的技术是here。
标签: debugging .htaccess mod-rewrite