Dot-Htaccess

.htaccess 多個 301 重定向

  • January 3, 2021

我正在將託管在 Apache 伺服器上的部落格移動到新域。

部落格文章的永久連結保持不變,但有幾個頁面的 url slug 會在新域上發生變化。

我的問題是以下是否可能以及我將如何使用重寫規則來做到這一點。

部落格文章的 URL slugs/永久連結和舊域上的大多數頁面在新域上將保持不變。所以我想我可以添加一個重定向規則,從https://huiskopenomteverhuren.nl/to重定向,https://vastgoedmentor.com因為它會在新域上找到相同的 /slug

舊網站的某些頁面已移至新的永久連結。所以我需要額外的規則來重定向,例如重定向https://huiskopenomteverhuren.nl/kennisbank/https://vastgoedmentor.com/resources其他一些頁面並執行此操作。

RewriteRule您可以在伺服器配置中使用正則表達式創建多個指令。您應該從更改了永久連結的特定重定向開始。可以在最後添加所有其他頁面的一般重定向。

RewriteEngine On

RewriteRule ^/kennisbank(/.*)?$ https://vastgoedmentor.com/resources$1 [END,R=301]
RewriteRule ^/old2(/.*)?$       https://vastgoedmentor.com/new2$1      [END,R=301]
RewriteRule ^/old3(/.*)?$       https://vastgoedmentor.com/new3$1      [END,R=301]

RewriteRule ^/(.*)$           https://vastgoedmentor.com/$1           [END,R=301]

的符號(/.*)?將執行帶有和不帶有斜杠的重定向,並將任何其他路徑詳細資訊添加到新 URL。因此,它將huiskopenomteverhuren.nl/kennisbank/something-or-nothing轉向vastgoedmentor.com/resources/something-or-nothing

有關更多詳細資訊,請RewriteRule訪問 https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

由於所有規則都指向不同的域,因此沒有陷入循環的風險。但是將END標誌添加到所有規則中以避免剩餘規則被評估仍然是一個好主意。除了L標誌之外,該END標誌還避免評估 .htaccess 文件中的任何其他規則。

有關標誌的更多詳細資訊,請參見 https://httpd.apache.org/docs/current/rewrite/flags.html

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