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

我有很多规则,因此手动进行操作并不容易。所以我想知道是否有任何测试工具可用于放置规则并传递URL,并查看匹配的规则和结果是什么?

否则,某种高级日志记录可能会指导我解决我的问题所在。

由于我的大脑即将融化,任何帮助将不胜感激!

干杯

最佳答案

我已经使用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;我只是将其保留在那里,注释掉了,以提醒自己我不使用它。)

通过删除开头的#并保存来取消注释该行。 (在其编辑器中,单击左上角的Apply或ctrl-s;然后在主对话框中再次单击Apply。您可以将主对话框保持打开状态以快速将其再次注释掉。)

Rewrite.log文件将开始快速填充。这实际上仅在您的请求是唯一的开发系统上才是实际的。如果要生产,请打开它,打一下页面,然后迅速关闭它。日志文件具有IP地址,可以帮助您找到规则。

您将看到的是初始请求通过所有规则,直到匹配为止。然后您会看到[INTERNAL REDIRECT],这意味着它已经完成了重写规则(这是一个误称,使我迷惑了一段时间-只是意味着它是从我们的角度进行重写,而对于实际的Web重定向则是“显式强制重定向” )。

这是我对这个问题的回答中的一个日志文件示例:
How to redirect a page in ISAPI_Rewrite

这会将/ cnvrt重定向到/ convert,然后将/ 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'

关于debugging - isapi重写调试或测试工具,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5301987/

10-17 00:40
查看更多