nginx 301redirect不适用于www。 子域

我试图用nginx创build一个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域名,也可以redirect到www.domain.net:

  server { listen 80; server_name domain.net domain.co www.domain.co; return 301 $scheme://www.domain.net$request_uri; } 

但是,当我inputwww.domain.co,网站加载正常,但地址栏仍然显示www.domain.co而不是www.domain.net。 同样,做一个curl – 我www.domain.co显示200而不是301.省略www。 只有打字domain.co送我到www.domain.net。 curl -I domain.co也返回一个正确的301。

任何想法为什么这不工作时,我添加www。 我一直在尝试一段时间,search/反复试验已经没有结果了。

你的nginx重写规则看起来很好。

此问题最可能的原因是您的DNSlogging尚未更新。 请仔细检查以确保您已将domain.co和www.domain.co的DNS Alogging指向正确的地址。 如果您最近更新了DNSlogging,则可能需要更多时间才能传播更新并且旧logging过期。 这反映在DNS SOAlogging中的生存时间(TTL)值中。

最后,如果你已经更新了你的nginxconfiguration,你还需要重新加载/重新启动nginx。