Mod_rewriteには2つの主な問題があります。
1)無効なルールがある場合、意味のあるエラーは報告されません
2)各変更を確実にテストするには、クロムのキャッシュを消去する必要があります。これはロケット科学ではありませんが、Ctrl + Shift + Deleteを押してから[OK]をクリックし、ウィンドウを閉じてリロードする必要があります。
Mod_rewriteコードを効率的に管理するために、達人のいずれかが秘密を共有してくれるかどうかを確認したいと思います。
1つの秘は、書き換えログを有効にすることです。有効にするには、Apacheのメイン設定または現在の仮想ホストファイルでこれらの行を試してください(.htaccess
のnot):
RewriteEngine On
RewriteLog "/var/log/Apache2/rewrite.log"
RewriteLogLevel 3
Apache httpd 2.4 mod_rewrite RewriteLogおよびRewriteLogLevelディレクティブは、モジュールごとの新しいロギング構成に完全に置き換えられました。
LogLevel alert rewrite:trace6
Benが言及したLogRewriteディレクティブは、Apache 2.4では使用できなくなりました。代わりにLogLevelディレクティブを使用する必要があります。例えば。
LogLevel alert rewrite:trace6
http://httpd.Apache.org/docs/2.4/mod/mod_rewrite.html#logging を参照してください
基本的なURL解決の場合、テストを行うには、手動のブラウザーではなく、wget
やcurl
などのコマンドラインフェッチャーを使用します。その後、キャッシュをクリアする必要はありません。上矢印だけを押して、シェルに入力して、テストフェッチを再実行します。
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