1.1でのSSL通信
どうやるか?
app_controllerのbeforeFilterに記述
注意
$_SERVER['REQUEST_URI']を使うとリダイレクトしたときに
プロトコルが変更されていない(ようわからん)。
代わりに$_SERVER['HTTPS']を使うとうまくいく。
サンプルコード
#app_controller.phpに記述 class AppController extends Controller { // SSL通信をするアクションの定義 var $sslActions = array('action1', 'action2', 'action3'); function beforeFilter() { // データ(SSLフラグ)の読み込み $isSSL = IS_SSL; // SSL使用フラグが立っていればhttpsでリダイレクト if($isSSL) { if( array_search( $this->action, $this->sslActions ) !== false ) { // SSL通信定義されたアクションでhttpsがセットされ てないなら、httpsでリダイレクト if( !isset($_SERVER['HTTPS']) ) { $this->redirect('https://'.$_SERVER['HTTP_HOST'] . $this->here); exit; } } else { // SSL通信が定義されていないが、httpsがセットされ ているなら、httpでリダイレクト if( isset($_SERVER['HTTPS']) ) { $this->redirect('http://'.$_SERVER['HTTP_HOST'] . $this->here); exit; } } } } }