【.htaccess】アクセスしたら自動的にhttpsにリダイレクトさせる方法
2018/08/31
SSL化したサイトに、httpでアクセスされた場合に、自動的(強制的?)に https://~~ にリダイレクトさせる .htaccess を書いたので、忘備録としてポストします。
なおCPIのシェアードサーバでの場合です。
httpsリダイレクト用.htaccess@CPI
CPIでの.htaccess
最初は以下の内容を書いていたのですが、CPIでは動きませんでした。
1 2 3 4 5 6 7 8 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / # 強制的にHTTPSとする RewriteCond %{HTTPS} on RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> |
他のサーバではどうかは分かりませんが、どうもCPIでは
RewriteCond %{HTTPS} on
が動いてくれないようでした。
で、次に以下のものを作成。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
AddHandler x-httpd-php559 .php suPHP_ConfigPath /usr/home/ユーザ名 DirectoryIndex index.php index.html <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteBase / # 強制的にHTTPSとする RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> |
軽く説明。
1行目、2行目:
CPIでのお約束。
どのバージョンのPHPを使うのか、そのバージョンの php.ini をどこに置いているのか、を設定しています。
3行目:
初期にアクセスさせたいファイルを指定。
この場合は、最初に index.php、index.phpがない場合は index.html にアクセスしなさい、って意味です。
6行目:
こちらもCPIでのお約束。Mod Rewriteを使う場合のおまじない。
11行目:
コメントにもある通り、強制的にHTTPSにリダイレクトさせる処理。
80番ポートでのアクセスの場合を条件とします。
12行目:
URL書き換えを行い、https:// にリダイレクトさせる
と、以上のようなもので無事に動いてくれました。
ちなみに、以下のようにSSL用の443番ポートじゃなかったらという書き方でも、意味は同じです。
1 2 3 4 5 6 7 8 9 |
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteBase / # 強制的にHTTPSとする RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> |
やっぱりちょっとクセがある気がしますね、CPI。