Linux

Redirect Permanent vs RedirectMatch,哪個更好地在 Apache 中強制 SSL 安全?

  • July 27, 2019

我一直在使用:

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 添加到該行即可創建一個RedirectRedirectMatch永久 (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.htmlle.com/mypath暗示le.com/mypath.html

最佳實踐

解決方案是:

1) 制定所有路徑和文件名僅小寫的內部標準。

  1. 設置重寫規則,為方案、子域、尾隨路徑斜杠和文件副檔名的所有變體進行永久 301 重定向。

因為可能性實際上是無窮無盡的,並且Redirect需要區分大小寫的路徑,RedirectMatch或者Rewrite是更好的選擇,所以每個可能的變化:

https://www.example.com/sitepath/

完全以這種方式顯示給 Google 抓取工具,而不是

http://example.com/SitePath/index.php

我不會發布重寫規則的具體範例,因為有太多變數(包括 HSTS 問題)和產生問題的方法。相反,我將向您推薦 Dan Morell 的HSTS站點非常出色的教程和HSTS站點的單獨連結。

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