我有我的 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
否则会导致另一个重定向,最终导致无限循环。