想知道是否有人知道或有过调试一组isapi重写规则的经验吗?
我有一套非常大的规则,因此手动完成它们并不容易。所以我想知道是否有任何测试工具可用于放入您的规则并传入URL,并查看匹配的规则是什么以及结果URL是什么?
或者失败了,某种高级日志记录可能会指导我的问题所在。
当我的大脑即将融化时,任何帮助都会受到赞赏!
干杯
答案 0 :(得分:7)
我已经使用isapi_rewrite的调试日志记录完成了这项工作。它运作良好,但它对你的大脑融化没有帮助。一个真正的调试器会很好。
我假设你正在使用isapi_rewrite v3。
日志记录由主 httpd.conf 文件控制。使用“经理”应用编辑此文件,默认安装在开始 - >程序 - > Helicon - > ISAPI_Rewrite 3 - > ISAPI_Rewrite Manager
或者,您可以在C:\ Program Files \ Helicon \ ISAPI_Rewrite 3 \ httpd.conf(或等效的Windows安装目录)中手动编辑它。我相信它是隐藏的,所以你需要显示隐藏的文件。
以下是我对此文件的评论,所以我记得这些设置。根据需要对线路进行注释。
# Logging
# RewriteLog specifies log file.
# RewriteLogLevel specifies verbosity. 0 = none, 9 = all.
#RewriteLogLevel 9
# LogLevel is for general logging for config file loading problems, not rewriting. Default is warn.
#LogLevel debug
RewriteLogLevel
是打开和关闭登录的设置。我一般使用0或9.我出于好奇尝试了其他设置,但不知道具体细节。一般来说,如果我正在追逐一个问题,我想要一切。
RewriteLog会指定一个备用日志文件,但我只是将其保留为未指定,并在C:\ Program Files \ Helicon \ ISAPI_Rewrite 3 \(或等效的Windows安装目录)中写入Rewrite.log
(我很少(从不?)使用LogLevel;我只是把它保留在那里,注释掉,提醒自己我不使用它。)
删除前导#
并取消保存,取消注释该行。 (在他们的编辑器中,单击左上角的“应用”或ctrl-s;然后在主对话框中再次单击“应用”。您可以打开主对话框以快速将其注释掉。)
Rewrite.log文件将快速填满。这实际上只适用于开发系统,您的请求是唯一的。如果您正在制作,请打开它,点击页面,然后快速关闭它。日志文件具有IP地址,可帮助您找到规则。
您将看到的是初始请求通过所有规则,直到匹配为止。然后你会看到[INTERNAL REDIRECT]
这意味着它已经完成了重写规则(这有点误以为我愚弄了一段时间 - 它只是意味着它从我们的视图中重写,而对于实际的“明确强制重定向”网站重定向)。
以下是我对这个问题的回答中的日志文件示例:
How to redirect a page in ISAPI_Rewrite
将/ cnvrt重定向到/ convert,然后重写/转换为/convert.aspx
您可以看到与重定向匹配的第一个块并执行此操作。然后第二个块是/ convert url匹配并被重写为convert.aspx。如果没有匹配,那么它就完全符合所有规则。您可以在第三个块中看到这个,我的浏览器在那里寻找它找不到的favicon.ico。
这些日志也让每个请求通过的次数大开眼界 - 每个图像,样式表等都通过了所有规则。我玩“快捷”规则来捕捉/ img,/ images,* .css,* .js,然后退出而不改变任何东西。你可以看到这些尝试在下面匹配。
最后一点:完成后,日志已关闭,请务必打开,清空并保存 Rewrite.log,不要删除Rewrite.log Helicon论坛上有许多关于重新创建文件的权限问题的帖子。显然isapi_rewrite可以安装并编辑它,但可能会有重现它的麻烦。
(Deleted IP addresses, date and time, domain and some session id tracking)
(1) Htaccess process request C:\Program Files\Helicon\ISAPI_Rewrite3\httpd.conf
(1) Htaccess process request d:\websitepath\.htaccess
(3) applying pattern '^(?:/img/|/images/)' to uri '/cnvrt'
(3) applying pattern '(?:\.css|\.js)$' to uri '/cnvrt'
(3) applying pattern '(.*)' to uri '/cnvrt'
(4) RewriteCond: input='www.yourdomain.com' pattern='^(?!www\.|x\.|loc)(.*)$' => not-matched
(3) applying pattern '^/cnvrt$' to uri '/cnvrt'
(1) escaping /convert
(2) explicitly forcing redirect with http://www.yourdomain.com/convert
(2) internal redirect with /cnvrt [INTERNAL REDIRECT]
(2) init rewrite engine with requested uri /convert
(1) Htaccess process request C:\Program Files\Helicon\ISAPI_Rewrite3\httpd.conf
(1) Htaccess process request d:\websitepath\.htaccess
(3) applying pattern '^(?:/img/|/images/)' to uri '/convert'
(3) applying pattern '(?:\.css|\.js)$' to uri '/convert'
(3) applying pattern '(.*)' to uri '/convert'
(4) RewriteCond: input='www.yourdomain.com' pattern='^(?!www\.|x\.|loc)(.*)$' => not-matched
(3) applying pattern '^/cnvrt$' to uri '/convert'
(3) applying pattern '^/convert$' to uri '/convert'
(1) Rewrite URL to >> /projects/rw/convert.aspx
(2) rewrite '/convert' -> '/projects/rw/convert.aspx'
(2) internal redirect with /projects/rw/convert.aspx [INTERNAL REDIRECT]
(2) init rewrite engine with requested uri /favicon.ico
(1) Htaccess process request C:\Program Files\Helicon\ISAPI_Rewrite3\httpd.conf
(1) Htaccess process request d:\websitepath\.htaccess
(3) applying pattern '^(?:/img/|/images/)' to uri '/favicon.ico'
(3) applying pattern '(?:\.css|\.js)$' to uri '/favicon.ico'
(3) applying pattern '(.*)' to uri '/favicon.ico'
(4) RewriteCond: input='www.yourdomain.com' pattern='^(?!www\.|x\.|loc)(.*)$' => not-matched
(3) applying pattern '^/cnvrt$' to uri '/favicon.ico'
(3) applying pattern '^/convert$' to uri '/favicon.ico'
答案 1 :(得分:1)
如果您可以在服务器或开发计算机上安装Helicon Ape而不是ISAPI_Rewrite,那么您可以使用Ape产品附带的更方便的调试器。文档mod_developer和文章Trace HTTP traffic and IIS configuration Helicon Ape在RewriteRule语法方面与ISAPI_Rewrite 3兼容,因此您可以使用它来开发规则。