書き換えログを有効にして書き換えルールをデバッグできるようにしたいのですが、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
.htaccess
ファイルでロギングを設定できないことを忘れたことに加えて、これはApacheバージョンの問題であることが判明しました。 RewriteLogディレクティブは新しいバージョンで置き換えられ、以下をVirtualhost構成に追加すると、書き換えログが有効になります。
LogLevel alert rewrite:trace3 (can be increased to trace8)
マニュアルから:
以前のバージョンのmod_rewriteに慣れている人は、間違いなくRewriteLogディレクティブとRewriteLogLevelディレクティブを探しているでしょう。この機能は、上記の新しいモジュールごとのロギング構成に完全に置き換えられました。
エラーログでこれらのメッセージを除外するには、次のようにします。
tail -f error_log|fgrep '[rewrite:'
私は自分自身を繰り返すのを助けることはできません:
.htaccessを使用し、それについてServerFaultで質問するほとんどの人は、最初は.htaccessを使用しないでください。これは、管理者向けではないエンドユーザーソリューションであるためです。
Httpdメインサーバーの設定ファイルにアクセスできる場合は、.htaccessファイルの使用を完全に避けてください。
.htaccess
ファイルを使用すると、Apache httpサーバーの速度が低下します。 .htaccessファイルに含めることができるディレクティブは、パフォーマンスが向上し同じ効果が得られるため、Directoryブロックで設定することをお勧めします。
ソース:Apacheマニュアル
どうやら、設定を公開するほとんどの人は cargo cult programmers 理由を理解せずに.htaccessファイルを盲目的にコピーすることに熱心であるようです。
あなたの問題は主要な例です: RewriteLog
ディレクティブは contextでのみ有効です サーバー構成または仮想ホストの...
つまり、.htaccess
ファイルでは許可されません!