在 nginx 中替换非 www 域名时出现问题

在 nginx 中替换非 www 域名时出现问题

我正在使用带有 Nginx 的 CentOS 7。我想将所有非 www 域名转换为“www”域名,例如,如果有人输入“abc.example.com”,我希望他们被重定向到“www.example.com”。我试过这个

server {
  listen 80;
  server_name "~^(?!www\.).*";
  return 301 $scheme://www.$host$request_uri;
}

在我的网站特定配置文件中,但实际的情况是,如果有人输入“abc.example.com”,他们会被重定向到“www.abc.example.com”。我该如何更正上述内容以替换而不是预先添加“www”?

答案1

如果您仅托管example.com域并希望将所有内容重定向到www.example.com,则应该使用默认服务器而不是正则表达式服务器。

例如:

server {
    listen 80 default_server;
    return 301 $scheme://www.example.com$request_uri;
}
server {
    listen 80;
    server_name www.example.com;
    ...
}

这个文件了解更多信息。

相关内容