Redirect nginx www重定向到具有子域的非www
如何将此规则~^(?\w+).example.com从www重定向到非wwwRedirect nginx www重定向到具有子域的非www,redirect,nginx,Redirect,Nginx,如何将此规则~^(?\w+).example.com从www重定向到非www server { listen 80; listen [::]:80 ipv6only=on; server_name ~^(?<subdomain>\w+)\.example\.com$; } 那我就试试看 server { server_name "~^www\.(.*)$" ; return 301 $scheme://$1$request_uri ; }
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name ~^(?<subdomain>\w+)\.example\.com$;
}
那我就试试看
server {
server_name "~^www\.(.*)$" ;
return 301 $scheme://$1$request_uri ;
}
这适用于子域。但是在主域中,我重定向了$request\u uri而没有域。需要记住的一点是,如果
nginx
找不到匹配的服务器名称,它将使用默认服务器。除非您定义了一个默认\u服务器
,否则它将使用第一个服务器
块监听相应的端口。有关详细信息,请参阅
显然example.com
与正则表达式~^(?\w+)\.example\.com$
不匹配,但是,您当前的服务器
块可以工作,因为它是隐式默认服务器
正则表达式server
块是按顺序计算的,因此请先放置www.
规则,以便www.example.com
不被视为子域
将主服务器
块显式设为默认值,以便它继续处理example.com
server {
server_name "~^www\.(.*)$" ;
return 301 $scheme://$1$request_uri ;
}
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name ~^(?<subdomain>\w+)\.example\.com$;
...
}
服务器{
服务器名称“^www.*)$”;
返回301$scheme://$1$request\u uri;
}
服务器{
监听80个默认_服务器;
侦听[:]:80默认_服务器ipv6only=on;
服务器名称~^(?\w+)\.example\.com$;
...
}
server {
server_name "~^www\.(.*)$" ;
return 301 $scheme://$1$request_uri ;
}
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name ~^(?<subdomain>\w+)\.example\.com$;
...
}