我只是不知道如何将任何非www子域重定向到www。
当我进入一个没有www子域的域时,我会被重定向到www./。就像$domain扩展不起作用一样。
server {
listen 80 default_server;
listen [::]:80;
listen 443 default_server;
listen [::]:443;
server_name ~^(?\.)?(?.+)$;
if ($sub != 'www') {
return 301 $scheme://www.$domain;
}
}有人能帮我找出如何获得正确的配置来完成以下工作吗?
domain-a.com > www.domain-a.com
dev.domain-b.com > www.domain-b.com
www.domain-a.com > Gets to see the website.提前感谢!
发布于 2020-07-30 07:25:49
我假设您的意思是希望从*.example.com和example.com重定向到www.example.com。
server {
listen 80 default_server;
listen [::]:80;
listen 443 default_server;
listen [::]:443;
ssl_certificate /path/to/certificate;
ssl_certificate_key /path/to/key;
server_name ~ example\.com$;
return 301 $scheme://www.example.com;
}
server {
listen 80 default_server;
listen [::]:80;
listen 443 default_server;
listen [::]:443;
ssl_certificate /path/to/certificate;
ssl_certificate_key /path/to/key;
server_name www.example.com;
# Other directives for www.example.com
}第一个服务器块匹配以example.com结尾的任何域名,并发出重定向。
第二个服务器块与www.example.com匹配。如nginx 文档所述,在匹配通配符/正则表达式匹配之前,nginx首先处理完全的server_name匹配。
更好的方法是定义一个单独的default_server块,它将为任何其他域名的请求返回404状态代码。
https://serverfault.com/questions/1027244
复制相似问题