2

誰かが一連のisapi書き換えルールのデバッグを知っているか、または経験したことがあるかどうか疑問に思っていましたか?

私はかなり大きなルールのセットを持っているので、手動でそれらを通過するのは簡単ではありません。だから私はあなたのルールを入れてURLを渡すために利用できるテストハーネスがあるかどうか疑問に思っていました、そしてどのルールが一致するか、そして結果のURLは何ですか?

またはそれが失敗した場合、私の問題がどこにあるかについて私を導くかもしれないある種の高度なロギング。

私の脳が溶けようとしているので、どんな助けでも大歓迎です!

乾杯

4

2 に答える 2

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\Helicon\ISAPI_Rewrite 3\ (または同等の Windows インストール ディレクトリ)に書き込みます。

(私はめったに (一度も?) LogLevel を使用したことがありません。使用しないことを忘れないように、コメントアウトしてそのままにしておきます。)

先頭の を削除して行のコメントを外し、#保存します。(エディターで、左上の [適用] をクリックするか、ctrl-s をクリックしてから、メイン ダイアログでもう一度 [適用] をクリックします。メイン ダイアログを開いたままにしておくと、すぐにコメント アウトできます。)

Rewrite.log ファイルはすぐにいっぱいになります。これは、実際には、要求が唯一のものである開発システムでのみ実用的です。実稼働中の場合は、オンにしてページにアクセスし、すぐにオフにします。ログ ファイルには、ルールの検索に役立つ IP アドレスが含まれています。

一致するまで、すべてのルールを通過する最初のリクエストが表示されます。次に、ルールの書き換えが完了したことを意味することがわかります ([INTERNAL REDIRECT]これは、しばらくの間私をだました誤称です。これは、実際の Web リダイレクトの「明示的にリダイレクトを強制する」に対して、私たちの見解から書き換えていることを意味するだけです)。

この質問に対する私の回答からのログ ファイルの例を次に示します:
ISAPI_Rewrite でページをリダイレクトする方法

これにより、/cnvrt が /convert にリダイレクトされ、/convert が /convert.aspx に書き換えられます。

最初のブロックがリダイレクトに一致し、それを実行していることがわかります。次に、2 番目のブロックは /convert URL の一致で、convert.aspx に書き換えられます。一致するものがない場合は、すべてのルールに違反します。これは、ブラウザが favicon.ico を探しに行った 3 番目のブロックで確認できますが、見つかりませんでした。

これらのログは、すべてのリクエストがどれだけ通過したかについても目を見張るものがあります-すべての画像、スタイルシートなどがすべてのルールを通過します. /img、/images、*.css、*.js をキャッチする「ショートカット」ルールをいじって、何も変更せずに終了しました。以下で、これらが一致しようとしているのを見ることができます。

最後の注意: ログがオフになったら、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'
于 2011-07-23T02:56:41.737 に答える
1

サーバーまたは開発マシンに ISAPI_Rewrite の代わりに Helicon Ape をインストールできる場合は、Ape 製品に付属しているより便利なデバッガーを使用できます。ドキュメントmod_developerおよび記事HTTP トラフィックのトレースと IIS 構成 Helicon Ape は、RewriteRule 構文に関しては ISAPI_Rewrite 3 と互換性があるため、ルールの開発に使用できます。

于 2011-07-26T14:02:28.837 に答える