2012-08-30 95 views
2

我們有一個ExpressionEngine網站,我們通過http和https訪問。當通過https訪問時,我們的用戶會收到來自IE的安全警告,因爲一些資產不安全地訪問(在這種情況下引用CSS和圖像)。ExpressionEngine通過http和https訪問

當設置'General Config - > URL到你的站點的根目錄'包含http://協議標識符時(這個字段爲空,只設置爲站點域[example.com]),或者沒有協議[//example.com/]設置,我們遇到其他問題,所以這些不是一個真正的選擇)。有問題的URL當然是模板中的{path =}或{stylesheet =}生成的。

有沒有一種很好的方式來獲取通過與頁面相同的協議傳遞的所有資產?

感謝, 斯科特

回答

1

這是因爲EE變量默認不檢測或使用https,因此您必須將它們設置爲代碼。最簡單的方法是使用一個附加:

http://devot-ee.com/add-ons/https-support

http://devot-ee.com/add-ons/dm-force-ssl

http://devot-ee.com/add-ons/force-ssl(商業)

(排名不分先後),我沒有用任何的這些所謂能」當我使用我自己的插件時,推薦一個特定的插件。

+0

好吧,真棒 - HTTPS支持正是我一直在尋找的。這是一個很好的簡單擴展,如果通過https訪問,會話中的EE'base_url'(等等)會重置。 –

0

你需要包含根網址是什麼?通常我會將網站的根網址設置爲「/」。

另一種選擇是手動包含這些資產(不使用路徑或樣式助手)。

如果一個URL是真實的,它將自動繼承當前的協議。

+0

當我使用'/'時,保存控制面板中的條目中斷 - 特別是Pages模塊抱怨有關錯誤的URL。是的,我可以手動編寫URL,但這裏要保留{path =}和朋友的優點。 –

0

您可以使用PHP檢測協議,並在您的system/expressionengine/config/config.php文件中動態設置它。我用的是這樣的:

$protocol = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https://" : "http://"; 
$base_url = $protocol . $_SERVER['HTTP_HOST']; 

$config['base_url'] = $base_url . "/"; 

您可以從這個基礎上在config.php建立你的主題的路徑,不同的圖像路徑,上傳路徑等所有。但$config['site_url']是什麼影響{path=""}{stylesheet}標籤的輸出。

欲瞭解更多信息,請參閱NSM's Config Bootstrap file或文章Configuring ExpressionEngine for multiple servers。對於您可以在config.php中設置的所有路徑,請參閱EE2 Config Overrides

+0

感謝一些更好的選擇。爲了簡單起見,[HTTPS支持](http://devot-ee.com/add-ons/https-support)在一個小擴展中做到這一點;它還處理site_url和其他一些不常用的設置,這很酷。我喜歡在config.php中做這件事的想法,或者從那裏需要的東西,然後把它放到我的工具箱中! –