SSL redirect httpからhttpsへリダイレクト
最近、httpから入力という処理が、かなりいかがわしい作業に思えるほど、httpsでのアクセスが広く使われています。
XREA共有サーバで、共有SSLにりダイレクトしたい時に、WEBにあるサンプルスクリプトは、無料共有レンタルサーバみたいなものを想定しているはずもなく、途方に暮れます。
結構苦労したので、XREAでSSLリダイレクトを実現する.htaccessの書き方をメモします。
リダイレクトの一般的な例
一般的に、紹介されているコードサンプルは、以下のパターンが多い。
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にりダイレクトします。