PLESKを使ったレンタルサーバでmod_rewriteが効かない
JavaWebアプリケーションで個人情報入力フォームなんかがあるページの場合は、大抵HTTPSプロトコルにmod_rewriteを使ってリダイレクトさせているのだが、PLESKという管理ツール付きで申し込んだレンタルサーバ(マイティサーバー)でリライトが効かないという現象でかなりハマってしまった。
通常だったらhttpd.confに
<IfModule mod_rewrite.c> RewriteEngine On RewriteLog /var/log/httpd/rewrite_log RewriteLogLevel 3 RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^/hoge/(.*)?$ https://%{HTTP_HOST}/hoge/$1 [L,R] </IfModule>
って書いてたらもうばっちりHTTPSプロトコルへ飛ばしてくれて、ログもこれでもか!!ってくらい吐かれるんだが、今回は全くそんな挙動は見せてくれなかった。
んで、試行錯誤しつつ色々やって色々調べてみたらどうやらPLESKを使ってドメイン管理している場合は以下のパターン名パスに対象ドメインの設定ファイルやドキュメントルートが設定されるらしい。
/home/httpd/vhosts/<ドメイン名>/
じゃあ、リライトの設定はどこに書けばいいのかっていうと
/home/httpd/vhosts/<ドメイン名>/conf/httpd.include
に書けばよいらしいのです。
/home/httpd/vhosts/<ドメイン名>/conf/httpd.includeの内容
<VirtualHost 99.99.99.99:80> ServerName hoge.jp:80 ServerAlias www.hoge.jp UseCanonicalName Off DocumentRoot /home/httpd/vhosts/hoge.jp/httpdocs CustomLog /home/httpd/vhosts/hoge.jp/statistics/logs/access_log plesklog ErrorLog /home/httpd/vhosts/hoge.jp/statistics/logs/error_log <IfModule mod_userdir.c> UserDir /home/httpd/vhosts/hoge.jp/web_users </IfModule> <IfModule mod_ssl.c> SSLEngine off </IfModule> <Directory /home/httpd/vhosts/hoge.jp/httpdocs> <IfModule sapi_apache2.c> php_admin_flag engine off </IfModule> <IfModule mod_php5.c> php_admin_flag engine off </IfModule> Options -Includes -ExecCGI </Directory> <Directory /home/httpd/vhosts/hoge.jp/web_users> <IfModule sapi_apache2.c> php_admin_flag engine off </IfModule> <IfModule mod_php5.c> php_admin_flag engine off </IfModule> </Directory> #↓以下リライト記述を追記↓ <IfModule mod_rewrite.c> RewriteEngine On RewriteLog /var/log/httpd/rewrite_log RewriteLogLevel 0 RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^/hoge/(.*)?$ https://%{HTTP_HOST}/hoge/$1 [L,R] </IfModule> </VirtualHost>