isapi重写调试或测试工具

Wic*_*ams 2 testing debugging isapi-rewrite

想知道是否有人知道或有经验,调试一组isapi重写规则?

我有一套非常大的规则,因此手动完成它们并不容易.所以我想知道是否有任何测试工具可用于放入您的规则并传入URL,并查看匹配的规则是什么以及结果URL是什么?

或者失败了,某种先进的日志记录可能会指导我的问题所在.

当我的大脑即将融化时,任何帮助都会受到高度赞赏!

干杯

goo*_*eye 7

我用isapi_rewrite的调试日志记录完成了这个.它运作良好,但它对你的大脑融化没有帮助.一个真正的调试器会很好.

我假设你正在使用isapi_rewrite v3.

日志记录由主httpd.conf文件控制.使用"Manager"应用编辑此文件,默认安装在开始 - >程序 - > 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
Run Code Online (Sandbox Code Playgroud)

RewriteLogLevel是打开和关闭日志记录的设置.我一般使用0或9.我出于好奇尝试了其他设置,但不知道具体细节.一般来说,如果我追逐一个问题,我想要一切.

RewriteLog会指定一个备用日志文件,但我只是将其保留为未指定,并将其写入Rewrite.logC:\ Program Files\Helicon\ISAPI_Rewrite 3 \(或等效的Windows安装目录)

(我很少(从不?)使用LogLevel;我只是把它保留在那里,注释掉,提醒自己我不使用它.)

通过删除前导#并保存它来取消注释该行.(在他们的编辑器中,单击左上角的"应用"或ctrl-s;然后在主对话框中再次单击"应用".您可以打开主对话框以快速将其再次注释掉.)

Rewrite.log文件将快速填满.这实际上只适用于开发系统,您的请求是唯一的.如果您正在制作,请打开它,点击页面,然后快速关闭它.日志文件具有可帮助查找规则的IP地址.

您将看到的是初始请求通过所有规则,直到匹配为止.然后你会看到[INTERNAL REDIRECT]它意味着它重写了规则(这有点像是误导了我一段时间 - 它只是意味着它从我们的视图重写,而不是"显式强制重定向"实际的网络重定向).

这是我对这个问题的回答的日志文件示例:
如何在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'
Run Code Online (Sandbox Code Playgroud)

  • 哇惊人的详细解答,谢谢:)我在过渡期间自己发现了这个,并且用它效果很好 - 虽然你说它会让你的大脑在你第一次看日志时暂时融化.将此标记为答案! (2认同)