Apache-2.4

通過將所有請求重定向到 apache 上的 https 來防止混合內容警告

  • September 27, 2018

我有 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

引用自:https://serverfault.com/questions/932890