Mod-Rewrite
使用 modrewrite 將 http 更改為 https(不重定向)
我有一個包含文件,可以說
inc-navigation.html
,它在每一頁都有絕對路徑(http://www.pathtoimage.com/image.com
)。好吧,使用 SSL,我不能使用相同的包含文件,因為它沒有引用https://
多麼痛苦!所以,當瀏覽器請求 https 頁面時,我可能正在考慮使用 htaccess 對所有 HTTP 到 HTTPS 的引用進行 url 重寫。同樣,為了清楚起見,我不想“重定向”,只是“替換”。
所以,我有這個:
RewriteCond %{HTTPS} !=on RewriteRule ^http$ https
但這似乎不起作用。這種事情甚至可能嗎?
HTTPS 是基於 SSL/TLS 的 HTTP,它保護了傳輸層,即瀏覽器和 Web 伺服器之間的通信。
mod_rewrite
通過重定向在內部或外部重寫請求,但僅在瀏覽器發送請求後,在您的情況下為時已晚。如果您想通過 HTTPS 連接使用通常託管在純 HTTP 上的內容,您可以設置從 HTTPS 主機到純 HTTP 主機的反向代理。
mod_proxy_http
,預設情況下與 Apache 2.x 捆綁在一起,將能夠Location
在重定向中重寫標頭,但不能重寫頁面本身(及其連結)的內容。為此,您可能需要查看mod_proxy_html
,它應該能夠重寫頁面本身的連結。話雖如此,在您的
inc-navigation.html
文件中包含絕對連結聽起來像是一個設計錯誤,執行搜尋/替換以擺脫該文件中的這些絕對連結可能比設置mod_proxy_html
.如果您使用的某些絕對連結指向其他主機,您可以使用網路路徑相對引用(以 開頭
//
,從而使方案相對)。當然,這只有在這些主機啟用了 HTTPS 時才有效。