ひとつのサイトの中にSSLページと非SSLページを混ぜる場合は注意が必要です。
http://book.cakephp.org/2.0/ja/development/sessions.html
に書かれてあるように、session.cookie_secureをfalseにしないとcookieが継続できません。
| 1 2 3 4 5 6 | Configure::write('Session', array(     'defaults' => 'php',     'ini' => array(         'session.cookie_secure' => false     ) )); | 
SSLページから他のページに飛ぶときに、相対リンクだとやはりSSLのかかったページにとびます。暗号化通信を解除しようと思うとhttp://から始まる絶対リンクで書かないといけません。
これを相対リンクのままにして強制的にhttpかhttpsに振り分けるようにしたやり方も書いときます。
config/route.phpでsslディレクトリ以下へのアクセスはpssl/を省いたコントローラ・アクションにアクセスし、パラメータsslを入れるよう設定。
| 1 2 3 4 5 6 7 | // SSL Router::connect( 	'/ssl/:controller/:action/*', 	array( 		'ssl' => true, 	) ); | 
AppControllerでアクセスのたびに環境変数のHTTPSとパラメータsslを比べてリダイレクトし直しています。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public function beforeFilter() { 	if (env('HTTPS')){ 		if (!isset($this->request->params['ssl'])){ 			$this->redirect( 				'http://'.Configure::read('site_domain').$this->here.(count($_GET) ? '?'.http_build_query($_GET) : '') 			); 		} 	} else { 		if (isset($this->request->params['ssl'])){ 			$this->redirect( 				'https://'.Configure::read('site_domain').$this->here.(count($_GET) ? '?'.http_build_query($_GET) : '') 			); 		} 	} } |