我设置了一个在多个主机上监听的 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;
}