Redirect Permanent vs RedirectMatch,哪個更好地在 Apache 中強制 SSL 安全?
我一直在使用:
RedirectMatch /(.*) https://www.website.com/$1
在 apache 中強制從虛擬主機 80 到 443 的重定向。
我的理由是,抓取使用者輸入的任何內容並將其直接轉換為 https 是有意義的。然而,我也經常看到這種用法:
Redirect permanent / https://www.website.com/
我沒有使用它,因為我假設它不會是使用者鍵入的地址到 https 的精確翻譯。
哪一個最適合對整個站點執行加密以及使用嚴格的傳輸安全性?
Redirect 或 RedirectMatch 可以是 301 或 302,具體取決於您呼叫它的方式,因此這不是兩者之間的區別。
差異和含義:
不同之處在於
Redirect
只匹配一個簡單的 URL-PATH,而RedirectMatch
允許您使用正則表達式模式匹配。此外,301 是永久重定向,302 是臨時重定向。
尋找戈多
為了保持搜尋引擎排名,您應該始終使用 301 重定向。理想情況下,對於 SEO,您希望協議和 FQDN 具有一定的一致性,因此它遠遠超出了僅執行 SSL/TLS 的範圍。
因此,假設您首頁的“完整”URL 是:
https://www.example.com/index.php
儘管您可能有一個不區分大小寫的伺服器,並且將所有子域別名為根域,並且如果路徑中沒有隱含文件’index’,它將使用文件’index’,這樣您可以通過輸入到達相同的位置只有 example.com 進入瀏覽器的位置欄位。雖然這肯定會讓使用者很容易直接輸入,
example.com
但它會給 SEO 帶來潛在的問題。如果您的伺服器是這樣設置的,那麼所有這些 URL 都會解析為完全相同的內容:https://www.example.com/index.php https://www.example.com/index https://www.example.com/ https://example.com/index.php https://example.com/index https://example.com/ http://www.example.com/index.php http://www.example.com/index http://www.example.com/ http://example.com/index.php http://example.com/index http://example.com/
但是即使你的伺服器可能認為這些都是一樣的,並且提供的內容是相同的,Google認為它們都是唯一的 URL,當他們確定這 12 個 URL 提供重複的內容時,你將在搜尋排名中受到懲罰。
僅僅確保您的所有內部連結都被指定為首選 URL 是不夠的 - 您網站的某些粉絲無疑會發布連結,並按照
http://example.com
您的喜好編寫連結,https://www.example.com
因此您需要 Google 知道http://example.com
應該是解釋為您的首選,並且執行此操作的方法是使用永久重定向。現在,您只需將 301 添加到該行即可創建一個
Redirect
或RedirectMatch
永久 (301):Redirect 301 /here/ https:www.example.com/there/ RedirectMatch 301 /here/(.*) https:www.example.com/there/$1
此外,對於永久重定向,這些變體:
Redirect 301 Redirect Permanent RedirectPermanent
所有的意思都是一樣的。
一朵玫瑰不是一朵玫瑰不是一朵玫瑰不是一朵玫瑰
我什至沒有在目錄或參數上使用斜杠和區分大小寫,但這些也有所不同。Google 唯一不關心大小寫或斜杠的情況是在根域中。
所有這些都與穀歌相同:
www.MyFunDomain.com/ www.MyFunDomain.com www.myfundomain.com/ www.myfundomain.com WWW.MyFuNdOmAiN.COM
這是因為域名規範不區分大小寫。但是這些:
example.com/MyPath/ example.com/MyPath example.com/mypath/ example.com/mypath example.com/mYpAtH
即使您的系統或伺服器認為它們相同,也都被認為是***不同的。***雖然 TLD 不需要尾部斜杠,但所有路徑都需要斜杠。
le.com/mypath/
暗示le.com/mypath/index.html
和le.com/mypath
暗示le.com/mypath.html
。最佳實踐
解決方案是:
1) 制定所有路徑和文件名僅小寫的內部標準。
- 設置重寫規則,為方案、子域、尾隨路徑斜杠和文件副檔名的所有變體進行永久 301 重定向。
因為可能性實際上是無窮無盡的,並且
Redirect
需要區分大小寫的路徑,RedirectMatch
或者Rewrite
是更好的選擇,所以每個可能的變化:https://www.example.com/sitepath/
完全以這種方式顯示給 Google 抓取工具,而不是
http://example.com/SitePath/index.php
我不會發布重寫規則的具體範例,因為有太多變數(包括 HSTS 問題)和產生問題的方法。相反,我將向您推薦 Dan Morell 的非HSTS站點非常出色的教程和HSTS站點的單獨連結。