[Codeigniter-users] CI + SSL

Back to archive index

Takeshi Amano p****@takes*****
2008年 10月 7日 (火) 14:42:43 JST


天野です

以前kunitsujiさんの拡張ライブラリを使ってCI内でのSSLを実装してみましたが、
それ以外にも実装方法があるのをCIフォーラムのスレッドでみつけたのでここで
まとめておきます。

元のスレッド:
http://codeigniter.com/forums/viewthread/83154/

フォーラム内には以下の2つの方法がありました。

1. .htaccessなどapacheの設定をいじる方法
2. ヘルパ関数を使う方法

で詳細は以下の様な感じ

1. .htaccessなどapacheの設定をいじる方法
この方法ではmod_rewriteのRewriteCondを使って特定のコントーラー以下のアクセスは強制的にhttps経由に
しています。

スレッドにあった例、checkoutとadminコントローラ以下のアクセスをhttpsにしています。

RewriteEngine on

RewriteBase /

# Redirect all domain name variations to main site
RewriteCond %{HTTP_HOST} ^site.com [NC]
RewriteRule ^(.*)$ http://www.site.com/$1 [L,R=301]

# Force checkout to be secure
RewriteCond %{SERVER_PORT} 80
RewriteCond $1 !^(index\.php|images|javascripts|site|admin|stylesheets|robots\.txt)
RewriteRule /checkout(.*)$ https://www.site/checkout$1 [L]

# Force admin to be secure
RewriteCond %{SERVER_PORT} 80
RewriteCond $1 !^(index\.php|images|javascripts|site|checkout|stylesheets|robots\.txt)
RewriteRule /admin(.*)$ https://www.site.com/admin$1 [L]

# Flip back to http unless in checkout or admin
RewriteCond %{SERVER_PORT} !80
RewriteCond $1 !^(index\.php|images|javascripts|checkout|admin|stylesheets|robots\.txt)
RewriteRule ^(.*)$ http://www.site.com/$1 [L]

# Get CodeIgniter going
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1

2. ヘルパ関数を使う方法
このヘルパ関数をヘルパとして使える様にしておいたあと、httpsにしたいコントローラ内の
コンストラクタや関数内でこれを呼んでbase_urlの内容を置き換えた後redirectしていますね。

スレッドにあった例)

if ( ! function_exists('force_ssl'))
{
    function force_ssl()
    {
        $CI =& get_instance();
        $CI->config->config['base_url'] = str_replace('http://',
'https://', $CI->config->config['base_url']);
        if ($_SERVER['SERVER_PORT'] != 443)
        {
            redirect($CI->uri->uri_string());
        }
    }
}

2. の方がコードをいじるだけなので、変更は楽なのでこっちの方を使ってみようかなと思っています。

パフォーマンスとかはどちらがいいんでしょうか??

Takeshi Amano

As for that VP talk all the time, I'll tell you, I still can't answer
that question until somebody answers for me what is it exactly that
the VP does every day? - Sarah Palin




Codeigniter-users メーリングリストの案内
Back to archive index