2011-03-14 73 views
2

想知道是否有人知道或有過調試一組isapi重寫規則的經驗嗎?isapi重寫調試或測試工具

我有一套非常大的規則,因此手動通過它們並不容易。所以我想知道是否有任何測試工具可用於放入您的規則並傳遞一個URL,並查看匹配哪條規則以及產生的URL是什麼?

或者沒有那麼做,某種先進的日誌記錄可能會指導我如何解決我的問題。

任何幫助將非常感激,因爲我的大腦即將融化!

乾杯

回答

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將指定替代的日誌文件,但我只是把它指定,並將其寫入Rewrite.log在C:\ Program Files文件\赫利\下ISAPI_Rewrite 3 \(或等效的Windows安裝目錄)

(我有很少(從不?)使用LogLevel;我只是把它留在那裏,註釋掉,提醒自己我不使用它。)

取消前導#並取消保存註釋行。 (在他們的編輯器中,點擊左上角的應用或者ctrl-s;然後在主對話框中再次應用,您可以打開主對話框以快速註釋掉它。)

Rewrite.log文件將開始快速填滿。這實際上僅適用於您的請求是唯一的請求的開發系統。如果您正在製作,請打開它,點擊頁面,然後快速關閉它。日誌文件具有IP地址,可以幫助您找到您的規則。

你會看到的是通過所有規則的初始請求,直到匹配。然後你會看到[INTERNAL REDIRECT]這意味着它完成了重寫規則(這有點不恰當,這讓我誤會了一段時間 - 它只是意味着它從我們的視圖中重寫,而對於實際的Web重定向,明確強制重定向)。

這裏是我的回答這個問題一個日誌文件,例如:
How to redirect a page in ISAPI_Rewrite

這重定向/ cnvrt到/轉換,然後重寫/轉換爲/convert.aspx

你可以看到第一塊匹配重定向並執行此操作。然後第二個塊是/ convert url匹配並獲取重寫爲convert.aspx。如果沒有匹配,它只是貫穿所有規則。你可以在我的瀏覽器去找favicon.ico的第三個區塊看到它,它沒有找到。

這些日誌對於每個請求經過多少次 - 每個圖像,樣式表等都可以通過所有規則都令人大開眼界。我使用「快捷方式」規則來捕捉/ img,/ images,* .css,* .js,然後退出而不更改任何內容。你可以看到這些試圖在下面匹配。

最後請注意:當完成,日誌被關閉,一定要公正開放,空和保存 Rewrite.log,不要刪除Rewrite.log上有關於赫利論壇很多帖子權限會重新創建文件。顯然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' 
+2

哇令人驚訝的詳細答案,謝謝:)我在臨時期間自己發現了這一點,並用它來取得很好的效果 - 雖然就像你說當你第一次看日誌時它會讓你的大腦暫時融化。標記爲答案! – WickyNilliams 2011-07-25 11:45:58

+0

謝謝你的回答!請通過[email protected]與我聯繫,我很樂意與您交流。 – Yaroslav 2011-07-26 14:13:09

1

如果可以的服務器或開發機上安裝赫利猿取代的ISAPI_Rewrite,那麼你CON使用隨產品猿更方便的調試器。文檔mod_developer和文章Trace HTTP traffic and IIS configuration 說到RewriteRule語法,Helicon Ape與ISAPI_Rewrite 3兼容,因此您可以使用它來開發規則。