.htaccess RewriteRule が機能しない場合のデバッグ方法 質問する

.htaccess RewriteRule が機能しない場合のデバッグ方法 質問する

RewriteRuleファイルに.htaccess何も実行されていない があります。これをトラブルシューティングするにはどうすればよいでしょうか?

  • ファイルが Apache によって読み取られ、従われているかどうかをどのように確認すればよいでしょうか.htaccess? echo "it is working" メッセージを書き込むことはできますか? 書き込んだ場合、その行はどこにエコー出力されますか?
  • .htaccessファイルが使用されていない場合、Apache でそのファイルを使用するにはどうすればよいでしょうか?
  • .htaccessが使用されているのにRewriteRuleまだ効果がない場合、デバッグするために他に何ができるでしょうか?

ベストアンサー1

htaccessで認識されないキーワードなど、ジャンクな値を入力してURLに.htaccessアクセスします。動作している場合は、foo barsakjnaskljdnas

500内部サーバーエラー

内部サーバーエラー

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

すぐに入れておくことをお勧めしますRewriteEngine on


.confあなたは自分のマシン上にいるので、Apacheファイルにアクセスできると想定します。

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

LoadModule rewrite_module modules/mod_rewrite.so

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


ログの書き換え

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

上記の 3 行を に入力しvirtualhost、httpd を再起動します。

RewriteLogLevel 9レベルに高い値を使用すると、Apache サーバーの速度が大幅に低下します。 レベル 2 を超える書き換えログファイルはデバッグ時にのみ使用してください。 レベル 9 では、ほぼすべての書き換えログの詳細がログに記録されます。


アップデート

Apache 2.4 では次のような変更が行われました:

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

書き換えログそして書き換えログレベルディレクティブは削除されました。この機能は、mod_rewriteモジュールの適切なレベルのログを設定することで提供されるようになりました。ログレベルディレクティブ。mod_rewrite のログセクションも参照してください。

LogLevelの詳細については、LogLevel ディレクティブ

あなたは達成できる

RewriteLog "/path/to/rewrite.log"

このように今

LogLevel debug rewrite_module:debug

おすすめ記事