【发布时间】:2017-01-18 07:57:32
【问题描述】:
我用过这个:
服务器{
server_name "~^(?!www.).*" ;
返回 301 $scheme://www.$host$request_uri;
}
但这会重定向所有内容。我需要为此编写子域的异常。
【问题讨论】:
-
如果您有一个与每个子域完全匹配的服务器块,则它应该优先于这个正则表达式块
我用过这个:
服务器{
server_name "~^(?!www.).*" ;
返回 301 $scheme://www.$host$request_uri;
}
但这会重定向所有内容。我需要为此编写子域的异常。
【问题讨论】:
如果包含server_name "~^(?!www.).*" 的服务器块与m.domain.com 匹配,那么您显然没有另一个带有server_name m.domain.com 的服务器块。
您可以使用默认服务器块来执行重定向,而不是使用复杂的正则表达式将网站名称重定向到默认服务器块。
例如:
server {
listen 80 default_server;
return 301 http://www.domain.com/$request_uri;
}
server {
listen 80;
server_name www.domain.com m.domain.com subdomain.domain.com;
...
}
更多详情请见this document。
【讨论】: