我正在尝试使用 nginx 创建从一个域到另一个域的 301 重定向。这是我目前正在做的事情,它按我想要的方式工作:
server {
listen 80;
server_name domain.net;
return 301 $scheme://www.domain.net$request_uri;
}
server {
listen 80;
server_name www.domain.net;
...
}
我想修改第一个服务器块以包含 .co 域名并重定向到 www.domain.net:
server {
listen 80;
server_name domain.net domain.co www.domain.co;
return 301 $scheme://www.domain.net$request_uri;
}
但是,当我输入 www.domain.co 时,网站加载正常,但地址栏仍然显示 www.domain.co 而不是 www.domain.net。同样,执行 curl -I www.domain.co 会显示 200 而不是 301。省略 www. 并仅输入 domain.co 会将我发送到 www.domain.net。curl -I domain.co 也会返回正确的 301。
知道为什么添加 www 后不起作用吗?我已经尝试了一段时间,但搜索/反复试验都无果。
答案1
您的 nginx 重写规则看起来不错。
导致此问题的最可能原因是您的 DNS 记录尚未更新。请仔细检查,确保您已将 domain.co 和 www.domain.co 的 DNS A 记录指向正确的地址。如果您最近更新了 DNS 记录,则可能需要更多时间才能传播更新并让旧记录过期。这反映在您的 DNS SOA 记录中的生存时间 (TTL) 值中。
最后,如果您更新了 nginx 配置,您还需要重新加载/重新启动 nginx。