[英].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地址。 例如,如果您有一個站點:
您可以使用以下方式通過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.