1. ホーム
  2. apache

[解決済み] .htaccess RewriteRuleが動作していない場合のデバッグ方法

2022-08-25 18:18:35

質問

私は RewriteRule の中に .htaccess というファイルがありますが、これは何もしていません。どのようにトラブルシュートすればよいのでしょうか?

  • どのようにすれば .htaccess ファイルが読み込まれ、Apache に従わされているかどうかを 確認するにはどうしたらよいでしょうか?echo "it is working" メッセージを書くことができますか、もし書いたら、その行はどこに echo されますか?
  • もし .htaccess ファイルが使われていない場合、どのようにして Apache にそれを使わせることができるでしょうか?
  • もし .htaccess が使われているが、私の RewriteRule はまだ効果を持っていません。

どのように解決するのですか?

ジャンクな値を .htaccess 例えば foo bar , sakjnaskljdnas htaccessで認識されないキーワード を実行し、URLにアクセスしてみてください。うまくいっていれば

500 内部サーバー エラー

内部サーバエラー

サーバーに内部エラーまたは設定ミスが発生し、リクエストを完了できませんでした。

の直後に置くことをお勧めします。 RewriteEngine on .


あなたのマシンにいるのですから。私はあなたがapacheにアクセスすることができると仮定しています .conf ファイルにアクセスできます。

を開く .conf ファイルを開き、以下のような行を探します。

LoadModule rewrite_module modules/mod_rewrite.so

コメント(#)されている場合は、コメントを解除してapacheを再起動します。


ログを書き換えるには

RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9

上記の3行を virtualhost .httpdを再起動します。

RewriteLogLevel 9 Level に高い値を使うと、Apache サーバの速度が劇的に低下します! 2 以上のレベルの書き換えログファイルはデバッグのためだけに使ってください! Level 9 は、ほとんどすべての rewritelog の詳細を記録します。


最新情報

Apache 2.4 で変更されたことがあります。

FROM 2.2 から 2.4 へのアップグレード

この RewriteLog RewriteLogLevel ディレクティブは削除されました。この機能は、mod_rewrite モジュールに適切なレベルのログを設定するために LogLevel ディレクティブを使うことで提供されるようになりました。mod_rewrite のロギングの項も参照してください。

LogLevel について詳しくは、以下を参照してください。 LogLevel ディレクティブ

を達成することができます。

RewriteLog "/path/to/rewrite.log"

このように

LogLevel debug rewrite_module:debug