2011-11-18 9 views
8

サイトの特定の部分に対してHTTPSを強制するにはどうすればいいですか?ログインページまたは登録ページを開き、残りのサイトにHTTPを使用しますか?CakePHP - 選択的SSL

+0

[選択的にCakePHPで特定のアクションのためにSSLを有効にする]の可能な重複(http://stackoverflow.com/questions:

そうでない場合は、.htaccessファイルを修正し、あなたのホストを仮定すると、これにアクセスすることができます/ 751338/selective-enabling-ssl-for-certain-actions-in-cakephp) – sarnold

答えて

0

私はCodeIgniterで正確なことをしました。私は完全にCakePHPに精通していませんが、私はプロセスが似ていると確信しています。

  1. 私はapacheがSSLと非SSLトラフィックを同じディレクトリに向けるように設定しました。
  2. 次に、コンフィグレーションでSSLを必要とするコントローラ(レジスタ、ログインなど)を列挙したものを作成しました。
  3. 次に、現在のコントローラがその配列にあったかどうかをチェックするオートロードヘルパをhttp://の代わりにhttps://にリセットします。コントローラーが配列内にない場合は、base_urlhttp://に強制します。

私のために完璧に働いた。 CodeIgniterプロジェクトのコード例が役立つかどうか教えてください。

Similar post that may help.

0

あなたはのRequestHandlerコンポーネントをロードして!isSslはその後、HTTPSページ:)他にやるにリダイレクト場合には、HTTPまたはHTTPSから来ているかどうかを判断するためにisSsl()関数を使用している他のものは何でもあなたが望むもの。 isSsl機能here

0

書籍情報より良い解決策は、特定のURLのためのhtaccessでのmod_rewriteでこれをやって一緒にすべてのアウトのコードを残している可能性があります。

特定のURLの書き換えルールを設定できます。ここで

は、サイト全体のためにそれを行う方法でリードです:

http://www.besthostratings.com/articles/force-ssl-htaccess.html

1

私のお気に入りは、メソッドを強制的にhttpsに変換するPHPスクリプトの最初のものとしてこれを置くことです。これはJoomlaで動作し、CakePHPでうまく動作するかもしれません。

if($_SERVER['SERVER_PORT'] == 80) {   
header('Location:https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.basename($_SERVER['PHP_SELF'])); 
die(); 
} 

このスニペットは、表示しているページにhttpsを強制します。証明書ページを隔離する場合は、「$ _SERVER ['PHP_SELF']」変数の情報に基づいて条件を設定します。

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L] 
関連する問題