
我有一個 PHP 應用程式在多個主機上監聽的設置,例如:
maindomain.com a.maindomain.com b.maindomain.com
maindomain.com 中的部分路由需要重定向。為此,我不久前配置了此重定向:
rewrite ^/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;
這使得所有對 maindomain.com/myroute/ 的請求都會重新導向到 maindomain.com/new-myroute 。
問題是,此重定向也適用於其餘子網域,使 a.maindomain.com/myroute 重定向到 maindomain.com/new-myroute。
我想從應用該重定向中排除這些子網域,使路由類型 a.maindomain.com/myroute 保持不變。
我嘗試過不同的重寫,例如
rewrite ^https://maindomain.com/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;
rewrite ^maindomain.com/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;
rewrite maindomain.com/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;
但它們都不起作用。
關於如何將重定向僅應用於主域有什麼想法嗎?謝謝。
編輯:伺服器名稱有一個通配符,監聽所有可能存在的子網域:
server_name maindomain.com *.maindomain.com;
答案1
使用單獨的伺服器區塊或使用 if 條件
if ($host = "example.com") {
rewrite ^/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;
}