2010-06-05 91 views
3

我試圖捕捉任何HTTPS流量到我的網站,這樣的面前:的.htaccess重定向到HTTPS HTTP不工作

https://www.domain.com 

被重定向到:

http://www.domain.com 

然而,其他子域需要被重新引導到其他地方。除了https - > http重定向之外,大多數情況下這都是可行的。下面是目前我的.htaccess文件:

RewriteEngine On 

RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 

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 [L,R=301] 

這似乎是這個位:

RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 

不工作,我會想象。事實上,它似乎根本沒有重定向。

在另一個子目錄我有效果相反的正常工作:

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

所以我的想法是相反的應該做的工作,但貌似沒有。

任何想法的人?

編輯

我想,這可能有一些做的事實,在服務器上有哪個ISP用於提供一個通用的解決HTTPS到您的網站的SSL證書。例如,如果你有一個網站:

http://www.yourdomain.com

您可以通過訪問相同的內容/託管帳戶通過https:

https://server100.securedomain.com/yourdomain.com

難道是因爲當我輸入HTTPS到瀏覽器我被服務的通用證書,因爲它不匹配我輸入的域名我收到一個安全警告關於一個不可信的證書,這是停止重定向?

EDIT 2

望着服務器頭,我認爲我與我上面的假設是正確的。服務器正在返回:

The host name in the certificate is invalid or does not match 

這會停止重定向嗎?

回答

4

剛纔意識到我從來沒有關閉過,所以爲了其他人試圖解決這個問題的好處,我現在就來。

簡而言之,捕獲所有我嘗試實現的https - > http重定向將不起作用,因爲服務器首先提供了證書,然後生成安全警告。出於明顯的安全原因,這發生在重定向之前,因此重定向不起作用。

希望能幫助別人。

+0

true ...對於那些沒有SSL證書的服務器,需要接受網頁上的警告。然後下面的代碼將重定向從https到http:
'的RewriteCond%{HTTP_HOST} XYZ \ .co.uk $ [NC]'
\t'的RewriteCond%{HTTPS} on'
\t'重寫規則^([^/] +)?$ http://%{HTTP_HOST}/$ 1 [R = 301,L]'
Invincible 2015-05-01 11:21:53

+0

那麼有沒有辦法避免警告屏幕?它不可能強制HTTP始終爲所有頁面,並避免警告頁面? – Robbiegod 2015-11-18 18:24:13

0

如果「它似乎並沒有在所有重定向」我的猜測是,

RewriteCond %{HTTPS} on 

由於某種原因失敗。我在一個例子中看到了這個:

RewriteCond %{SERVER_PORT} ^443$ [OR] 
RewriteCond %{HTTPS} =on 

也許你需要兩個?

+0

做到這一點謝謝你的迴應,但這也不起作用。 – 2010-06-05 16:28:06

0

我該知道的舊線,但我只是找到了答案,它可以幫助別人的未來:

肯定的是,虛擬主機文件中的SSL服務器:

AllowOverride All 

這很可能在你的默認服務器虛擬主機文件中,這就是爲什麼你可以從http

+0

這只是簡單的解析'.htaccess'文件。它本身沒有HTTPS/SSL邏輯。 – 2014-02-17 05:52:57