簡體   English   中英

.htaccess將https重定向到http無效

[英].htaccess redirect https to http not working

我想抓住任何https流量到我的網站前面,所以:

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}

所以我的想法應該完成這項工作,但看似沒有。

有人想過嗎?

編輯

我認為這可能與服務器上有一個ssl證書有關,而ISP使用該證書為您的站點提供通用的https地址。 例如,如果您有一個站點:

http://www.yourdomain.com

您可以使用以下方式通過https訪問相同的內容/主機帳戶:

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

可能是因為當我在瀏覽器中鍵入https時,我正在提供通用證書,因為它與我輸入的域名不匹配,我收到一個關於不受信任的證書的安全警告,該證書正在停止重定向?

編輯2

看看服務器頭文件,我認為我的上述假設是正確的。 服務器正在返回:

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

這會停止重定向嗎?

剛剛意識到我從未關閉過這個,所以為了其他任何試圖解決這個問題的人的利益,我現在就會這樣做。

簡而言之,我試圖實現的所有https - > http重定向都不起作用,因為服務器首先提供證書然后生成安全警告。 出於明顯的安全原因,這在重定向之前發生,因此重定向不能正常工作。

希望能幫助別人。

如果“它似乎根本沒有重定向”我的猜測就是這樣

RewriteCond %{HTTPS} on

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

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

也許你需要兩個?

我知道這是一個舊線程,但我剛剛找到答案,它可能會幫助將來的某個人:

確保ssl服務器的虛擬主機文件具有:

AllowOverride All

這可能在您的默認服務器虛擬主機文件中,這就是您可以從http執行的原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM