Apache-2.2

如何強制子域作為預設域但保持其他子域正常工作?

  • July 11, 2013

我安裝了一個 WordPress 站點http://www.example.com,另一個測試 WordPress 站點位於http://test.example.com. 我已使用此 .htaccess 程式碼成功http://www.example.com重定向到:http://beta.example.com

RewriteCond %{HTTP_HOST} !^beta\.example\.com
RewriteRule ^(.*)$ http://beta.example.com/$1 [R=301,L]

但是,當試圖去http://test.example.com它時,它會強制它http://beta.example.com/test/出現 404 錯誤。有沒有辦法讓這個測試版重定向但仍然讓我的 WordPress 網站http://test.example.com正常工作?

如果我對您的理解正確,並且您希望 test.example.com 仍然訪問 test.example.com。您可以添加另一個條件,並且必須滿足這兩個條件才能遵循規則。它看起來像:

RewriteCond %{HTTP_HOST} !^beta\.example\.com
RewriteCond %{HTTP_HOST} !^test\.example\.com
RewriteRule ^(.*)$ http://beta.example.com/$1 [R=301,L]

現在,子域都beta不會test重定向,但所有其他人都會。

如果您只希望 www.example.com 或 example.com 轉到beta您可以使用的子域

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com
RewriteRule ^(.*)$ http://beta.example.com/$1 [R=301,L]

在http://htaccess.madewithlove.be/有一個用於檢查 mod 重寫規則的漂亮工具

或者,如果您有權訪問伺服器區域文件,您可以為要指向beta子域的所有域設置 CNAME 記錄,並且不會發生重定向,因此如果使用者訪問 www.example.com,則 URL 保持不變當他們實際上在測試網站上時。

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