常にSSL(https)接続する方法
開発環境:CakePHP2.5.1
サイトによっては常時SSL接続したい場合があります。
そのような時にCakePHPのAppControllerなどで対応することも可能ですが、AppControllerの読み込みはコアライブラリなどの様々なファイルを読み込んだ後なので、見た目は一瞬でも、実際はかなりのファイルを経由することになりますので、CakePHP側で設定するのではなく、.htaccessで行うのが良いでしょう。
.htaccessでの常時SSL化
CakePHPのwebroot直下の.htaccessは下記のようになっています。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
これに次のように2行追加することで常時SSL化にすることができます。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>