此设置用于多个域共享单个 CMS 平台。它将允许任何域指向我的服务器 IP。
我可以使用 nginx server_name _; 来捕获所有内容。
但是如果不存在 www,那么我想 301 重定向到 www(在前面附加 www.)。如果存在 www,那就没问题。
我怎样才能实现这个?
答案1
类似这样的事情可能会起作用(未经测试!):
server {
server_name ~^www\.;
<deliver content here>
}
server {
server_name ~^(?!www\.);
location / {
return 302 $scheme://www.$host$request_uri;
}
}
现在缺少其他选项!例如“listen”和“location”。
您可能应该添加另一个服务器块,其中包含服务器的公共 IP,它将非虚拟主机流量重定向到默认站点。
您应该注意 server_name 指令的处理顺序:http://nginx.org/en/docs/http/server_names.html