[英]nginx www redirect to non-www with subdomain
对于该规则〜^(?\\ w +)。example.com,我如何从www重定向到非www?
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name ~^(?<subdomain>\w+)\.example\.com$;
}
我尝试使用单独的主域重定向和所有子域重定向,但是对主域具有递归重定向。
server {
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
server_name "~^www\.(.*)$" ;
return 301 $scheme://$1$request_uri ;
}
然后我只尝试
server {
server_name "~^www\.(.*)$" ;
return 301 $scheme://$1$request_uri ;
}
并且适用于子域。 但是在主域中,我可以重定向到$ request_uri而不使用域。
要记住的一件事是,如果nginx
找不到匹配的server_name
,它将使用默认服务器。 并且除非定义default_server
,否则它将使用第一个server
块在适当的端口上进行侦听。 有关详细信息,请参见此文档 。
显然example.com
与正则表达式~^(?<subdomain>\\w+)\\.example\\.com$
不匹配,但是,您当前的server
块有效,因为它是隐式默认服务器。
正则表达式server
块按顺序求值,因此放置www.
请先执行规则,以免将www.example.com
视为子域。
将主server
块显式设置为默认,以便其继续处理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$;
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.