mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Apache HTTP でのアクセスを自動的に HTTPS に rewrite する方法!

[ webサイト, サーバ構築 ] [ Apache ]

こんばんは。

今日は、HTTPでのある特定のフォルダへのアクセスを自動的にHTTPSにリダイレクトする方法です。 例: [ http://www.hogehoge.com/hogehoge/ ]へアクセスしたら自動で [ https://www.hogehoge.com/hogehoge/ ]にリダイレクトする。

通常はあまり必要性を感じないかもしれませんが、 当方はどうしてもこの処理が必要となる場面に遭遇してしまいましたので。

作業記録

【前提条件】 ・サーバOSはCentOS ・WebサーバはApache2.2

1.「mod_rewrite」の有効化

Apache設定ファイル「/etc/httpd/conf/httpd.conf」を以下のように編集する。

1
2
3
4
5
# vi /etc/httpd/conf/httpd.conf
 :
↓↓コメント化されていればコメント化を解除
LoadModule rewrite_module modules/mod_rewrite.so
 :

2.「mod_rewrite」の有効化

同じくApache設定ファイル「/etc/httpd/conf/httpd.conf」を以下のように編集する。

1
2
3
4
5
6
7
8
9
10
# vi /etc/httpd/conf/httpd.conf

↓↓適当な場所に以下を追加
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteLog "logs/rewrite_log"
  RewriteLogLevel 0
  RewriteCond %{SERVER_PORT} !^443$
  RewriteRule ^/hogehoge/(.*)?$ https://%{HTTP_HOST}/hogehoge/$1 [L,R]
</IfModule>
  • RewriteEngine On rewriteを有効にする。
  • RewriteLog “logs/rewrite_log” rewrite動作のログファイル指定。
  • RewriteLogLevel 0 rewriteのログレベル指定。[1] にすると膨大なログが出るので、デバッグが終わったら [0] にする。
  • RewriteCond %{SERVER_PORT} !^443$ サーバ(Apache)への接続ポートが443番では無かったら(即ち、HTTPSでの接続ではなかったら)、以下のルールを適用する。
  • RewriteRule 必要な分を1行づつ記述していくが、基本は正規表現でマッチングをとり、一致したらHTTPSにrewriteさせる。

3.Apache の再起動

Apacheを再起動する。

1
# service httpd restart

以上です。

ではまた。

Comments