2010-06-04 34 views
0

我有一個網站,它在訪問基本上託管實際應用的子域時使用ssl,而前端網站存在於www,我不想使用ssl。因此,這將允許:.htaccess當不是www的時候強制ssl

http://www.domain.com 

但如果有人類型:

http://secure.domain.com 

它們會被迫:

https://secure.domain.com 

,當使用該子站點不允許任何非SSL流量。

目前我有這在我的.htaccess文件:

RewriteCond %{HTTP_HOST} ^domain\.com [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 

RewriteCond "%{HTTP_HOST}" !^www.* [NC] 
RewriteCond "%{HTTP_HOST}" ^([^\.]+).*$ 
RewriteRule ^(.*)$ https://secure.domain.com/a/login/%1 [R=301,L] 

這工作得很好,但如果我再編輯URI從HTTPS取下S仍然加載頁面,但不使用SSL。

如果我添加:

SSLOptions +StrictRequire 
SSLRequireSSL 

的.htaccess文件的頂部,然後它總是迫使流量SSL,但這是所有子域,包括WWW。

有沒有辦法只捕獲非www流量並強制使用ssl?

編輯:

澄清:

例如,如果你在:

https://secure.domain.com/a/login/test 

和編輯的URI是

http://secure.domain.com/a/login/test 

則仍然加載頁面,但不使用SSL。但是,如果使用

SSLRequireSSL 

然後它迫使整個站點的要求,我不希望在

http://www.domain.com 
+0

請您介紹一些關於它: 「這工作得很好,但如果我再編輯URI從HTTPS取下S仍然加載頁面,但不使用SSL。 「 – Ehsan 2010-06-04 19:57:32

回答

2

使用SSL解決

一些調整後我現在已經解決了這個問題。我所做的是編輯位於應用程序子目錄中的.htaccess文件:https://secure.domain.com/a/login/test並將其設置爲檢測是否正在使用ssl(我應該添加.htaccess文件的其餘部分是笨的利益):

RewriteEngine on 

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

RewriteCond %{HTTPS} on 
RewriteCond $1 !^(index\.php|images|includes|css|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L]