SSL redirect httpからhttpsへリダイレクト


SSLredirect
最近、httpから入力という処理が、かなりいかがわしい作業に思えるほど、httpsでのアクセスが広く使われています。



ログインなどSSLのページで非SSLのログインページも用意している.. - 人力検索はてなというのもあるので、httpをすべて、httpsにするといい事だらけではありませんが、、、

XREA共有サーバで、共有SSLにりダイレクトしたい時に、WEBにあるサンプルスクリプトは、無料共有レンタルサーバみたいなものを想定しているはずもなく、途方に暮れます。


結構苦労したので、XREASSLリダイレクトを実現する.htaccessの書き方をメモします。

リダイレクトの一般的な例


一般的に、紹介されているコードサンプルは、以下のパターンが多い。

.htaccessでSSLリダイレクトを行う

RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

cl.pocari.org - SSL 通信へのリダイレクト

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/path/to/(.*)?$ https://%{HTTP_HOST}/path/to/$1 [L,R] 

RewriteCond は リダイレクトの条件で、この条件がないと、無限ループになってしまいます。


でも、XREAでは、

%{HTTPS} XREA共有SSLでは、これは、常に、NULLになります。

%{SERVER_PORT} XREA共有SSLでは、これは、常に、80になります。


どうしましょう

環境変数 REMOTE_ADDR で識別するのがよさそうです。

手動で、httpsで接続して、REMOTE_ADDR を確認します。

<?php echo $_SERVER['REMOTE_ADDR'];?>

.htaccessを記述します。

RewriteEngine On

RewriteCond %{REMOTE_ADDR} !^219\.163\.200\.121$
RewriteRule (.*) https://ss1.xrea.com/%{HTTP_HOST}%{REQUEST_URI} [R,L]

これで、httpでアクセスすると、httpsにりダイレクトします。

SAMPLE http://text2html.s321.xrea.com/test/