Apache-2.2

更改了域名,現在有 2 個如何使用 htaccess 重定向到首選的一個?

  • January 11, 2019

我在/forums子目錄上有一個 WordPress 站點和一個 PHPBB 論壇。

我在 Apache 的網站上添加了一個新域。添加域後,所有內容都將載入到兩個域上。

然後我更改了 WP-config 文件上的地址,WP 現在自動 301 重定向到新域(是的,這是一件事)。

到現在為止還挺好。/forums/仍然在新域和舊域上傳入。如何重定向這個子目錄,記住新域和舊域都添加到同一個伺服器安裝中?因此,當您訪問任何域時,都會點擊同一個.htaccess文件。

**所以我只/forums/**需要像重定向這樣的東西,而且只有當它被舊域訪問到新域時。那可能嗎?

我無法從站點中刪除舊域,否則它將無法解析。我想我可以創建一個僅用於重定向的新站點,但這似乎沒有必要。

編輯:我的嘗試(不工作)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^old-domain.com
RewriteCond %{REQUEST_URI} ^/forums/(.*)$
RewriteRule ^(.*)$ https://new-domain.com/forums/$1 [L,R=301]

所以,澄清一下,你想重定向old-domain.com/forums/<anything>new-domain.com/forums/<anything>.

RewriteCond %{HTTP_HOST} ^old-domain.com
RewriteCond %{REQUEST_URI} ^/forums/(.*)$
RewriteRule ^(.*)$ https://new-domain.com/forums/$1 [L,R=301]

這將重定向到https://new-domain.com/forums/forums/<whatever>,因為$1反向引用包含整個 URL 路徑(從RewriteRule 模式擷取,而不是CondPattern)。您可以簡單地forums/RewriteRule 替換中刪除,但是,不需要檢查的上述條件,並且可以對其進行整理。REQUEST_URI

在文件頂部.htaccess,在任何現有的 WordPress 指令之前嘗試以下操作:

RewriteCond %{HTTP_HOST} ^old-domain\.com [NC]
RewriteRule ^(forums/.*) https://new-domain.com/$1 [R=302,L]

不需要附加條件,因為 URL 路徑可以由RewriteRule 模式匹配(更有效)。

$1反向引用包含以 . 開頭的整個 URL路徑forums/

請注意,這是一個 302(臨時)重定向 - 僅當您確定它工作正常時才將其更改為 301(永久) - 以避免記憶體問題。

您需要清除瀏覽器記憶體,因為任何錯誤的 301 都可能已被記憶體。

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