Nginx 配置未重定向

Nginx 配置未重定向

我有我的 nginx 配置,并且我正尝试从非 www. 版本的网站重定向到 www. 版本。

server {
listen       80;
server_name  *.example.com example.com;
rewrite ^ https://www.example.com$request_uri permanent;
}
server {
 listen      443 ssl;
 server_name www.example.com;
 ssl_certificate      /etc/ssl/www.example.com/www.example.com.crt;
 ssl_certificate_key  /etc/ssl/www.example.com/www.example.com.key;

}

当我执行 curl -II 时,获得 301 永久移动的位置:https://example.com

答案1

您实际上配置了两个服务器,一个用于常规(http)访问,另一个用于安全访问(https)

在您要将非 www 请求重定向到 www 的服务器的服务器部分中,您需要在开头添加以下内容:

set $primary_domain www.yourdomian.com;
if ($host != $primary_domain) {
    rewrite  ^(.*)$ http://$primary_domain$1  permanent;
}

这实际上会将此处配置的所有主机重定向server到 www 版本,而不仅仅是空子域。请确保删除以 开头的部分,return否则会导致另一个重定向,最终导致无限循环。

相关内容