web-dev-qa-db-ja.com

Apache mod_rewriteをデバッグする方法

Mod_rewriteには2つの主な問題があります。

1)無効なルールがある場合、意味のあるエラーは報告されません

enter image description here

2)各変更を確実にテストするには、クロムのキャッシュを消去する必要があります。これはロケット科学ではありませんが、Ctrl + Shift + Deleteを押してから[OK]をクリックし、ウィンドウを閉じてリロードする必要があります。

Mod_rewriteコードを効率的に管理するために、達人のいずれかが秘密を共有してくれるかどうかを確認したいと思います。

154
puk

1つの秘は、書き換えログを有効にすることです。有効にするには、Apacheのメイン設定または現在の仮想ホストファイルでこれらの行を試してください(.htaccessnot):

RewriteEngine On
RewriteLog "/var/log/Apache2/rewrite.log"
RewriteLogLevel 3

Apache httpd 2.4 mod_rewrite RewriteLogおよびRewriteLogLevelディレクティブは、モジュールごとの新しいロギング構成に完全に置き換えられました。

LogLevel alert rewrite:trace6
257
Ben

Benが言及したLogRewriteディレクティブは、Apache 2.4では使用できなくなりました。代わりにLogLevelディレクティブを使用する必要があります。例えば。

LogLevel alert rewrite:trace6

http://httpd.Apache.org/docs/2.4/mod/mod_rewrite.html#logging を参照してください

118
Tobias Schultze

基本的なURL解決の場合、テストを行うには、手動のブラウザーではなく、wgetcurlなどのコマンドラインフェッチャーを使用します。その後、キャッシュをクリアする必要はありません。上矢印だけを押して、シェルに入力して、テストフェッチを再実行します。

23
Kaz

htaccessテスター があります。

特定のURLに対してどの条件がテストされ、どの条件が基準を満たし、どのルールが実行されたかを示します。

ただし、いくつかの不具合があるようです。

10
Andy

Ben's answer に基づいて、Linux(私の場合はDebian)でApacheを実行すると、次のことができます。

最初にファイルrewrite-log.loadを作成します

/ etc/Apache2/mods-availabe/rewrite-log.load

RewriteLog "/var/log/Apache2/rewrite.log"
RewriteLogLevel 3

次に入力してください

$ a2enmod rewrite-log

に続く

$サービスApache2の再起動

そして、書き換えルールのデバッグが終了したら

$ a2dismod rewrite-log && service Apache2 restart

3
Flow