apache の mod_rewrite で http のアクセスを https へリダイレクト

user-pic
0
環境:
Fedora 9
apache 2.2.8

ちょこっとハマりました。
バーチャルホストの場合はバーチャルホストのぶんだけ
mod_rewrite の記述が必要だったのですね。
SSL と同じでした。

apache の mod_rewrite を使うと、リクエストに対し正規表現を使ってリダイレクトできます。
今回の環境では httpd.conf の中で mod_rewrite はデフォルトで有効になってました。

LoadModule rewrite_module modules/mod_rewrite.so

# でコメントアウトされていたら、それを外しましょう。
下記は http のリクエストを https へリダイレクトする設定です。

<VirtualHost *:80>
DocumentRoot /var/www/html/
ServerName hoge.example.jp
ErrorLog logs/error_log
CustomLog logs/access_log combined
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*)?$ https://%{HTTP_HOST}/content/
</VirtualHost>
.
.
.

リクエストが TCP/port443 でない場合 (RewriteCond)
^/(.*)?$ (ドキュメントルートからすべてのリクエストに対して)
https://%{HTTP_HOST}/content/ へリダイレクトするという指示です。(RewriteRule)

今回は vhost.conf に書きました .htaccess でも可能なようです。
しかし、apache が毎回 .htaccess を読み込むようになるので
.conf に書くよりも遅くなります。root がある場合には
.conf に書きましょう。

トラックバック(0)

トラックバックURL: http://www.otamu.com/cgi/mt-tb.cgi/33

このブログ記事について

このページは、おたむが2008年6月23日 18:10に書いたブログ記事です。

ひとつ前のブログ記事は「Windows タイム」です。

次のブログ記事は「我が母校、豊渓中学校」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。