我正在使用GoDaddy的VPS(Apache、CentOS、cPanel)。我有一個對example.com有效的SSL證書,但不是www.example.com。
我想使用一個.htaccess檔案來轉發任何請求到https://example.com/<pages>。
我的代碼:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www.)?(.*)$ [NC]
RewriteRule ^(.*) https://example.com/$1 [L,R=301]
問題是:
所有測驗的瀏覽器(Chrome、Edge、Opera)對于http、https、www和特定頁面的所有組合都能正常作業。然而,Firefox不轉發https://www.example.com(無論是否有頁面)。
我收到一個安全警告,指出www.example.com不在證書上。
我已經嘗試了許多其他的代碼片段,但似乎都沒有效果。
uj5u.com熱心網友回復:
火狐可能看起來像個怪人,但實際上是其他瀏覽器做得 "不對"--為了用戶的方便,對其他人的服務器錯誤配置持寬容態度。(此外,一旦你意識到你提到的所有三個瀏覽器--Chrome、Edge、Opera--都是Chromium的分叉,它就不會顯得那么奇怪了。
如果你看一下Chrome的開發工具,你會發現:
重定向導航
www.example.com->example.com因為服務器提出了一個對example.com有效的證書,但對www.example.com無效。要禁用此類重定向,請使用以下標志啟動Chrome。--disable-features=SSLCommonNameMismatchHandling
因此,盡管您沒有為https://www.example.com提供有效的證書,但Chrome還是很好地執行了重定向,因為您確實提供了對重定向的目標域(example.com)有效的證書,盡管技術上重定向回應是通過一個沒有適當安全的連接(證書與請求域不匹配)回傳。
解決方案是首先要有一個適當的SSL證書,包括所有你希望你的網站可以到達的域名,在這種情況下,可能只是example.com和www.example.com。(如果你購買了裸域名的證書,一些證書頒發者甚至會免費包括www子域名。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/310720.html
標籤:
