僅將 NGinx 重新導向套用到主域(不包括子網域)

僅將 NGinx 重新導向套用到主域(不包括子網域)

我有一個 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;
}

相關內容