Apache-2.2
如何強制子域作為預設域但保持其他子域正常工作?
我安裝了一個 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 保持不變當他們實際上在測試網站上時。