Problemas para substituir domínios não www no nginx

Problemas para substituir domínios não www no nginx

Estou usando o CentOS 7 com Nginx. Quero converter todos os domínios não www em domínios "www", por exemplo, se alguém inserir "abc.example.com", gostaria que eles fossem redirecionados para "www.example.com". Eu tentei isso

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

no meu arquivo de configuração específico do site, mas o que acontece é que se alguém inserir "abc.example.com", será redirecionado para "www.abc.example.com". Como posso corrigir o acima para substituir em vez de pré-anexar "www"?

Responder1

Se você está hospedando apenas example.comum domínio e deseja que tudo seja redirecionado para www.example.com, você deve usar um servidor padrão em vez de um servidor de expressão regular.

Por exemplo:

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

Veresse documentopara mais.

informação relacionada