Apache-2.4
通過將所有請求重定向到 apache 上的 https 來防止混合內容警告
我有 wordpress 網站,現在應該完全通過 https 提供服務。我在大多數頁面上都收到混合內容警告,因為很多內容在數據庫中仍然有 http 地址,但都可以通過 https 獲得。
我的
.htaccess
文件中有以下內容:# Redirect HTTP to HTTPS RewriteCond %{HTTPS} !=on RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L] # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
我的 Apache 經驗有限,所以我的問題是為什麼上面沒有將所有請求重定向到 https,甚至是嵌入的內容?
為什麼上面沒有將所有請求重定向到 https,甚至是嵌入的內容?
確實如此,但在實際發出請求之前會出現瀏覽器警告。IE。在您的伺服器能夠重定向之前。這是必要的,以防止資訊通過 HTTP 和MITM攻擊洩漏。
當通過 HTTPS 發出請求時,客戶端和伺服器之間的通信將被加密。URL 路徑是隱藏的,任何窺探該網路流量的嘗試都會被阻止,因為它是加密的。但是,如果該 HTTPS 頁面通過 HTTP 發出請求(對於任何外部資源、CSS、JS、圖像、另一個站點、AJAX 請求等),那麼 URL 路徑是可見的,您可能會通過可以被第三方查看和操作的未加密連接。
您需要將數據庫中的 HTTP URL 更新為 HTTPS,以便您只在客戶端 HTML 中引用 HTTPS。
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
這是一個 302(臨時)重定向。一旦一切正常,您應該通過將
R
標誌更改為 .將其更改為 301(永久)R=301
。