web-dev-qa-db-ja.com

.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
9
codecowboy

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

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

マニュアルから:

以前のバージョンのmod_rewriteに慣れている人は、間違いなくRewriteLogディレクティブとRewriteLogLevelディレクティブを探しているでしょう。この機能は、上記の新しいモジュールごとのロギング構成に完全に置き換えられました。

エラーログでこれらのメッセージを除外するには、次のようにします。

tail -f error_log|fgrep '[rewrite:'
14
codecowboy

私は自分自身を繰り返すのを助けることはできません:

.htaccessを使用し、それについてServerFaultで質問するほとんどの人は、最初は.htaccessを使用しないでください。これは、管理者向けではないエンドユーザーソリューションであるためです。

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

どうやら、設定を公開するほとんどの人は cargo cult programmers 理由を理解せずに.htaccessファイルを盲目的にコピーすることに熱心であるようです。

あなたの問題は主要な例です: RewriteLog ディレクティブは contextでのみ有効です サーバー構成または仮想ホストの...

つまり、.htaccessファイルでは許可されません

4
HBruijn