如何在 nginx 中通用删除域名的 www?

如何在 nginx 中通用删除域名的 www?

我有一个服务器nginx 中的配置匹配多个域名:

server {
  server_name example1.com example2.com example3.com;
  # ...
}

我想重定向万维网版本到相应的域。我知道如何对具有重定向的单个域执行此操作,我也知道如何执行相反的操作,但我在这里找不到方法。

任何想法 ?

谢谢 ! :)

答案1

不要使用if

server {
    server_name ~^(www\.)(?<domain>.+)$;
    return 301 $scheme://$domain$request_uri;    
}

就这样 ...

答案2

好的,我找到了这个解决方案:

server {
  server_name www.exemple1.com www.example2.com www.exemple3.com;
  listen 80;

  if ($http_host ~ "www\.(.*)") { #Note the extra "\" after the www
    return 301 $scheme://$1$request_uri;
  }
}

它非常有效 :)

相关内容