下記質問にて、サーバサイドリダイレクトの設定を質問しましたが、質問中のベストアンサーの回答内容に加え、リダイレクトの際に「https」が「http」に書き換えられずに維持できる方法を教えてください。

また、この処理をした際に想定される問題点などありましたらご教授頂けると助かります。

http://q.hatena.ne.jp/1259901200

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/01/14 19:40:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント35pt
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 で判断、かな。

CGIプログラムに渡す環境変数

id:rouge_2008 No.2

回答回数595ベストアンサー獲得回数351

ポイント35pt

次のように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


とりあえず私の環境では大丈夫でしたので、おそらく上記で可能だと思います。

  • id:hamocha
    下記質問の下記は http://q.hatena.ne.jp/1259901200 です。なんだか改行が空いてしまったので念のため。
  • id:rouge_2008
    回答の記述をそのまま使用しているのでしょうか?

    RewriteRule (.*) http://www.example.jp/$1 [R,L]

    上記の記述の「http」を「https」に書き換えるだけで大丈夫ではないかと思います。
    テストしていないし、ほとんど変更点がありませんのでコメントで失礼します。

    RewriteRule (.*) https://www.example.jp/$1 [R,L]
  • id:hamocha
    rouge_2008 さん

    「http」を「https」に書き換えると、全てのURLが強制的に「https」に統一されてしまいました。
    「http」は「http」のまま、「https」は「https」のままで、ベストアンサーの回答内容が実現できれば良いのですけど。。
  • id:b-wind
    記述ミスを訂正

     RewriteCond %{HTTPS} = on

     RewriteCond %{HTTPS} on

    https での通信でない時って HTTPS 環境変数はセットされたっけ?

  • id:rouge_2008
    > https での通信でない時って HTTPS 環境変数はセットされたっけ?

    回答内に記載した一つ目の参照URLにある方法でログを確認しましたが、インプットが「off」になっていました。
    ちなみにApache 2.2系 + mod_sslです。
    他の環境ではどうでしょうね?
  • id:hamocha
    あぁ〜!コメントを書く前に終了してしまった!!
    どちらも回答の角度が微妙に違っていて参考になりました。
    ありがとうございます!!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません