
【.htaccess】アクセスしたら自動的にhttpsにリダイレクトさせる方法
2018/08/31
SSL化したサイトに、httpでアクセスされた場合に、自動的(強制的?)に https://~~ にリダイレクトさせる .htaccess を書いたので、忘備録としてポストします。
なおCPIのシェアードサーバでの場合です。
httpsリダイレクト用.htaccess@CPI
CPIでの.htaccess
最初は以下の内容を書いていたのですが、CPIでは動きませんでした。
[default]
RewriteEngine on
RewriteBase /
# 強制的にHTTPSとする
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
[/default]
他のサーバではどうかは分かりませんが、どうもCPIでは
RewriteCond %{HTTPS} on
が動いてくれないようでした。
で、次に以下のものを作成。
[default]
AddHandler x-httpd-php559 .php
suPHP_ConfigPath /usr/home/ユーザ名
DirectoryIndex index.php index.html
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# 強制的にHTTPSとする
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
[/default]
軽く説明。
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番ポートじゃなかったらという書き方でも、意味は同じです。
[default]
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# 強制的にHTTPSとする
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
[/default]
やっぱりちょっとクセがある気がしますね、CPI。