今日はApacheのconf設定についてご報告します。
ですが、現実世界ではこの三連休ずっとレイアウト変更のためのモール貼って配線⇒机移動して配線、という肉体労働をひたすら(最低でも40時間くらいは)やってました。体の節々が痛いです。寄る年波には勝てませんのう。
このリダイレクト動作、設定自体は基本の内容ですので、ご存知の方はもうここでおしまいです。
httpアクセスを同URLのhttpsにリダイレクトしたい、というだけなのです。
昨日(.htaccessファイルに記述したのに動作が変わらない - treedown’s Report)は.htaccessファイルで躓きましたが、結局Apacheのconfファイルで対処を実施しました。
やること
フォーム入力画面(https://www.hoge.co.jp/sslform/)がSSLリンクでない。
これではフォームの入力データが平文で流れてしまいます。
このURLをSSL対応するためにApacheの設定にてhttpsに変更してしまいたいです。
mod_rewriteの確認
対象の環境で「mod_rewrite」が有効であることを確認します。
----------------------------------------------
# cat /etc/httpd/conf/httpd.conf | less
# rpm -qa | grep httpd
httpd-2.2.3-91.el5.centos
# which modules
/usr/bin/which: no modules in (/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin)
# find / | grep mod_rewrite.c
# find / | grep mod_rewrite
/usr/lib/httpd/modules/mod_rewrite.so
# rpm -ql httpd | grep rewrite
/usr/lib/httpd/modules/mod_rewrite.so
# cat /etc/httpd/conf/httpd.conf | grep rewrite_module
LoadModule rewrite_module modules/mod_rewrite.so
#
----------------------------------------------
mod_rewriteはロードされているので利用可能でした。
confファイルの編集から実行
早速httpd.confに記述して動作確認しました。
----------------------------------------------
$ sudo vi httpd.conf
$ sudo tail -10 httpd.conf
## Admin Page SSL Rewrite Option
#
<Directory /var/www/html/admin>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.hoge.co.jp/sslform/$1 [R=302, L]
</IfModule>
</Directory>
$ sudo /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: Syntax error on line 1008 of /etc/httpd/conf/httpd.conf:
RewriteCond: bad flag delimiters
[FAILED]
----------------------------------------------
おや?エラーでストップしちゃいました。
構文エラー、ということです。どうやら"[R=302, L]"と空白(スペース)が入っていると「RewriteCond: bad flag delimiters」エラーとなってしまうようです。
ここはスペースを除いて"[R=302,L]"とし、再度httpdをリスタートします。
----------------------------------------------
$ sudo vi ./httpd.conf
$ sudo /etc/init.d/httpd start
Starting httpd: [ OK ]
$ sudo /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
$ sudo tail -10 httpd.conf
----------------------------------------------
無事起動しました。リスタートも問題なく(停止⇒開始)できているので記述に問題はなさそうです。では動作確認してみます。
<http://www.hoge.co.jp/sslform/>にアクセスすると、ブラウザの表記が<https://www.hoge.co.jp/sslform/>に自動変更されることが確認できます。
動作確認までOKです。