仅将 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;
}

相关内容