フロントエンドとしてApache httpdで実行されているTomcat 6 Webアプリがあります。mod_proxy と mod_proxy_ajp を使用して、リクエストを tomcat に転送しています。私のサーバーはubuntuを実行しています。現在、mod_rewrite を使用して先頭の www を削除しようとしているため、正規の Web サイトの URL はhttp://www.domain.comではなくhttp://domain.comになります。
mod_rewrite の使用に関する多くのチュートリアルを読みましたが、書き換えが機能しません。書き換えルールを .htaccess ファイルに入れてみました ( /etc/apache/sites-available/default ファイルを変更して AllowOverride all を設定した後)。apache2.conf、httpd.conf、rewrite.confに書き換えルールを入れてみました。書き換えログをオンにして、これらすべてを試しました。ログ ファイルは作成されますが、apache はそれに何も書き込んでいません。おそらく mod_proxy が書き換えルールの使用を何らかの形で妨げているのではないかと考えたので、それも無効にしてみました...それでも書き換えは行われず、ログにも何も記録されません。
この時点で、次に何を試すべきかまったくわかりません。Apache が書き換えルールを使用しない理由をトラブルシューティングするにはどうすればよいですか?
参考までに、私の書き換えディレクティブは次のとおりです。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
</IfModule>
編集:以下の回答は私の特定のケースに役立ちますが、一般的なApacheディレクティブのトラブルシューティング方法に関する回答ほどコミュニティ全体にはおそらく役に立ちません. たとえば、リクエストが入ったときにどのディレクティブがどの順序で適用されているかを教えてくれるポイントまでロギングを有効にする方法はありますか?
編集2:私は今、物事をうまく動かしています。私の仮想ホストは正しくセットアップされていませんでした。また、正規表現を書き換える権利もありませんでした。これが、私が作業するようになった最終的な書き換えディレクティブです。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com$1 [L,R=301]
</IfModule>