.htaccess で書き換えログを有効にしても機能しないのはなぜですか?

.htaccess で書き換えログを有効にしても機能しないのはなぜですか?

書き換えルールをデバッグできるように書き換えログを有効にしたいのですが、RewriteLog ディレクティブを追加すると 500 エラーが発生します。

バージョン情報:

Ubuntu 14.04

Server version: Apache/2.4.12 (Ubuntu)
Server built:   Feb  4 2015 14:22:06

の内容.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 5

RewriteBase /

RewriteRule ^/wordpress/wp-content/(.*)$ /wp-content/$1 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

エラー ログには次のように表示されます:

/var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration

答え1

ログをファイルで設定できないことを忘れていたことに加え.htaccess、これは Apache バージョンの問題でもあることが判明しました。RewriteLog ディレクティブは新しいバージョンで置き換えられており、Virtualhost 設定に以下を追加すると、書き換えログが有効になりました。

LogLevel alert rewrite:trace3 (can be increased to trace8)

マニュアルより:

以前のバージョンの mod_rewrite に慣れている方は、RewriteLog および RewriteLogLevel ディレクティブを探しているはずです。この機能は、前述の新しいモジュールごとのログ設定によって完全に置き換えられました。

エラー ログ内のこれらのメッセージをフィルター処理するには、次のようにします。

tail -f error_log|fgrep '[rewrite:'

答え2

繰り返しになりますが、

.htaccess を使用していて、ServerFault でそれについて質問する人のほとんどは、そもそも .htaccess を使用するべきではありません。これは、管理者向けではないエンドユーザー ソリューションだからです。

あなたがすべき.htaccessファイルの使用を完全に避けるhttpd のメイン サーバー構成ファイルにアクセスできる場合。.htaccessファイルを使用すると、Apache http サーバーの速度が低下します。.htaccess ファイルに含めることができるディレクティブは、Directory ブロックに設定する方が適切です。同じ効果が得られ、パフォーマンスが向上します。
ソース: Apache マニュアル

どうやら設定を公開している人のほとんどはカーゴカルトプログラマー理由を理解せずに、盲目的に .htaccess ファイルをコピーすることに熱心です。

あなたの問題はその好例です。RewriteLogこの指令は、コンテクストサーバー構成または仮想ホストの...

つまりそれは禁じられているファイルに.htaccess

関連情報