Ssl

不使用 mod_rewrite,將所有子域重定向到 https 的最佳方法是什麼?

  • January 22, 2016

我目前正在使用 mod_rewrite 將所有子域重定向到 https,但多個來源建議

不推薦使用 mod_rewrite 來執行此操作。請參閱 重定向SSL

apache 文件建議 Redirect 和 RedirectMatch :

RewriteRule 的一個常見用途是重定向整個 URL 類。例如, /one 目錄中的所有 URL 都必須重定向到 http://one.example.com/,或者可能所有 http 請求都必須重定向到 https。

Redirect 指令可以更好地處理這些情況。請記住,重定向保留路徑資訊。也就是說,一個 URL /one 的重定向也會重定向它下面的所有 URL,例如 /one/two.html 和 /one/three/four.html。

不幸的是,這兩個文件(以及我發現的任何其他文件)都只考慮匹配單個域,而不是所有子域。對於這樣一個相對簡單的任務,RedirectMatch 似乎是一個不錯的選擇,但我似乎無法像我預期的那樣讓“http”匹配:

RedirectMatch permanent "^http://(.*)$" "https://$1"

我對為什麼這不起作用的猜測是因為 redirectMatch 正在尋找路徑而不是 URI,但此時我被卡住了。是否可以在沒有 mod_rewrite 的情況下將所有子域重定向到 https,或者這是最好的可用方法?

通常,對於不同 VHost 的子域,我會在每個子域後面附加以下行。

Redirect permanent / https://bar.example.com/

我通常只為每個子域添加其中一個。如果您有非常多的子域,這種方法的可擴展性可能不是很大,但它很簡單並且可以完成工作。

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