書き換えルールをデバッグできるように書き換えログを有効にしたいのですが、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
!