また、この処理をした際に想定される問題点などありましたらご教授頂けると助かります。
http://q.hatena.ne.jp/1259901200
RewriteEngine on # wwwありに統一 ( https ) RewriteCond %{HTTP_HOST} !=www.example.com RewriteCont %{HTTPS} = on RewriteRule (.*) https://www.example.com/$1 [R,L] # wwwありに統一 ( http ) RewriteCond %{HTTP_HOST} !=www.example.com RewriteRule (.*) http://www.example.com/$1 [R,L] # index.htmlありに統一 RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_FILENAME}/index.html -f RewriteRule ^(|.*/)$ /$1index.html [R,L]
こんな所かな。
HTTPS 環境変数はサーバーによっては設定されない場合もあるのでその場合は乱暴だけど SERVER_PORT で判断、かな。
次のようにRewriteCondで条件を追加してみてください。
HTTPS接続がオフの時はオフのまま、オンの時はオンのままリダイレクトします。
RewriteEngine on # wwwありに統一 RewriteCond %{HTTP_HOST} !=www.example.jp RewriteCond %{HTTPS} off RewriteRule (.*) http://www.example.jp/$1 [R,L] RewriteCond %{HTTP_HOST} !=www.example.jp RewriteCond %{HTTPS} on RewriteRule (.*) https://www.example.jp/$1 [R,L]
http://gmt-24.net/archives/321
http://www.meibinlab.jp/nishijima/archives/54
とりあえず私の環境では大丈夫でしたので、おそらく上記で可能だと思います。
コメント(6件)
RewriteRule (.*) http://www.example.jp/$1 [R,L]
上記の記述の「http」を「https」に書き換えるだけで大丈夫ではないかと思います。
テストしていないし、ほとんど変更点がありませんのでコメントで失礼します。
RewriteRule (.*) https://www.example.jp/$1 [R,L]
「http」を「https」に書き換えると、全てのURLが強制的に「https」に統一されてしまいました。
「http」は「http」のまま、「https」は「https」のままで、ベストアンサーの回答内容が実現できれば良いのですけど。。
誤
RewriteCond %{HTTPS} = on
正
RewriteCond %{HTTPS} on
https での通信でない時って HTTPS 環境変数はセットされたっけ?
回答内に記載した一つ目の参照URLにある方法でログを確認しましたが、インプットが「off」になっていました。
ちなみにApache 2.2系 + mod_sslです。
他の環境ではどうでしょうね?
どちらも回答の角度が微妙に違っていて参考になりました。
ありがとうございます!!