2010-11-17 61 views
1

我在Windows 7上使用CodeIgniter和wamp。我生成了一個自簽名證書以及在https下運行網站所需的所有其他內容。我的網站在SSL模式下工作完美。問題是我只希望我的登錄和註冊頁面處於SSL模式。在CI中,我們只能配置一個網址,即:如何使登錄和註冊處於SSL模式?

$config['base_url'] = "https://localhost/abc"; 

我不想在SSL模式下運行我的整個網站。我怎樣才能做到這一點?我讀了以下鏈接:

http://stackoverflow.com/questions/1500527/how-to-use-ssl-with-codeigniter

但它並沒有解決我的任何問題。我不想複製該人正在討論的整個網站文件夾。我想維護http和https一樣的會話數據和cookie。我可以在控制器的構造函數中對需要SSL的頁面進行硬編碼嗎?如果在http上收到該安全頁面的請求,我應該重定向到https。這種方法是否有效?還是需要處理?如果有任何適當和優雅的解決方案,請讓我知道。使用.htaccess文件

回答

3

我有同樣的問題。就我而言,我只能在控制面板中使用SSL。

我通過重寫URL輔助解決了這個問題:

function base_url($flag = true) 
{ 
    $CI = CI_Controller::get_instance(); 
    if (strpos(current_url(), '/cp/') and $flag) { 
     return str_ireplace('http://', 'https://', $CI->config->slash_item('base_url')).'index.php/'; 
    } 
    return $CI->config->slash_item('base_url'); 
} 

在這種情況下 '/ CP /' 表示 「控制面板」。我被迫這樣做,因爲其他方式(如將secure_base_url添加到config.php或不同的SSL助手)不適用於我。

額外的$flag參數適用於應該在控制面板中加載的圖像,CSS和JS文件。在這些情況下使用base_url(false),因爲https://www.example.com/**index.php**/image.pngimage.png文件的錯誤地址)。

您可以爲您的網站做同樣的事情。

希望這會有所幫助。

2

將是我最好的猜測

RewriteRule ^my-account\/?(.+)?$ https://mydomain.com/my-account/$1 [NC,R,L] 

會爲你的工作?