(私のように)記述に慣れていないと少し頭痛の種になる可能性があるこの種のスクリプトを作成してデバッグする方法を考えていました。
それらを作成するためにツールを使用していますか?
ローカル構造を作成してブラウザーで何が起こっているかを確認するだけでなく、何が起こっているのかをデバッグするためのヒントはありますか?
読者への注意:古い答えはもう機能しません。
バージョン2.4以降、ApacheはRewriteLogLevel
およびRewriteLog
ディレクティブを許可しなくなりました。これらはすべて、単一のLogLevel
ディレクティブ( Log Files のドキュメントを参照)にバンドルされ、プレフィックスとtrace[1-8]
定数でモジュール固有のログレベルをサポートします。書き換えモジュール専用の最高レベルのロギングを設定するには、次を使用します。
LogLevel warn rewrite:trace8
URLに対してパターンをテストするのに役立つ任意の正規表現テストツールを使用できます(私は "The Regex Coach"-Windowsアプリを使用しています)。これはパターンの助けになるだけです-書き換えがどのように動作するかの一般的なロジック/フローをすでに知っているはずです。
To [〜#〜] debug [〜#〜] Apache構成ファイルを編集できる必要があります-RewriteLogLevel 9
およびRewriteLog /path/to/rewrite.log
を使用して、何が行われているのかを正確に確認しますURLの書き換え中にオンにします(これはサーバー構成なので、新しいサーバー構成を適用するにはApacheを再起動する必要があります)。
レベル9が必要な場合debug問題のあるルール。レベル3またはその他のかなり低い値では、詳細については説明せずに、進行中の概要のみを表示します。
数秒以内に巨大なログを生成する可能性があるため、ビジー/本番サーバーではレベル9を使用しないでください。
最新のブラウザは301リダイレクトをキャッシュするので、301(恒久)リダイレクトを行う必要がある場合は、テスト期間中に代わりに302を実行して(ルールと結果に満足するまでは、301に変更します)、301リダイレクトをキャッシュします。完全にルールを変更した(または削除した場合でも)苛立たしい状況で、ブラウザはまだリダイレクトを行います。そのような場合の唯一の解決策:-ブラウザのキャッシュをクリアしてページを再読み込みします。
仮想ホスト構成でRewriteLogディレクティブを設定できます。指定したファイルに必要な情報が書き込まれます。
RewriteLog "/usr/local/var/Apache/logs/rewrite.log"
さらに、RewriteLogLevelディレクティブを使用して、ログの量を制御します
RewriteLogLevel 3