Apache HTTP でのアクセスを自動的に HTTPS に rewrite する方法!
Updated:
今日は、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」を以下のように編集する。
# vi /etc/httpd/conf/httpd.conf
:
↓↓コメント化されていればコメント化を解除
LoadModule rewrite_module modules/mod_rewrite.so
:
2.「mod_rewrite」の有効化
同じくApache設定ファイル「/etc/httpd/conf/httpd.conf」を以下のように編集する。
# 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を再起動する。
# service httpd restart
以上です。
ではまた。
Comments