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


9

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

回答:


14

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

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

マニュアルから:

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

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

tail -f error_log|fgrep '[rewrite:'

あなたの質問は最初にapache-2.2でタグ付けされましたよね?質問自体のバージョンを見落とした可能性があります。よく見つかりました。
HBruijn、2015

これが誰かを助ける場合、私の問題は、ポート80のVHostでのロギングを有効にしていましたが、443ではありませんでした。HTTPSを使用していたため、ロギングが機能しませんでした。その愚かな間違いを見つけるのにしばらく
かかった

mod_log_debug有効にしておく必要があることを付け加えておきます...
thoni56

4

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

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

あなたは必要があり、完全に.htaccessファイルを使用しないようごHTTPDメインサーバ設定ファイルへのアクセス権を持っている場合。.htaccessファイルを使用すると、Apache httpサーバーの速度が低下します。.htaccessファイルに含めることができるディレクティブは、パフォーマンスが向上し同じ効果が得られるため、Directoryブロックで設定することをお勧めします。
出典: Apacheマニュアル

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

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

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


4
ログの検索は、コピーではなく、学習したい人が行うこととまったく同じです。Apacheは、古典的なキャッチ-22を設定しているようだ:あなたは場合にのみ、.htaccessを使用する必要がありますすることはできませんサーバーのルートにアクセスします。ただし、ログをオンにできるのは、サーバールートにアクセスできる場合のみです。.htaccessでこれらすべての書き換えを許可している場合は、ランダムなコピーや貼り付け/試行、およびエラーに依存する必要がないように、その動作をログに記録できるはずです。
Mark Berry

5
Wordpressなどの一部のアプリケーションは、デバッグが必要な.htaccessファイルを生成します。これは、ここに当てはまるようです。.htaccessファイルからのロギングは、他の誰かの不可解な正規表現を解こうとする場合の論理的な最初のステップです。
KeithL 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.