Problemas para reemplazar dominios que no son www en nginx

Problemas para reemplazar dominios que no son www en nginx

Estoy usando CentOS 7 con Nginx. Quiero convertir todos los dominios que no sean www a dominios "www", por ejemplo, si alguien ingresa "abc.example.com", me gustaría que sea redirigido a "www.example.com". Probé esto

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

en mi archivo de configuración específico del sitio, pero lo que sucede es que si alguien ingresa "abc.example.com", se le redirige a "www.abc.example.com". ¿Cómo puedo corregir lo anterior para reemplazar en lugar de anteponer "www"?

Respuesta1

Si solo aloja example.comun dominio y desea que todo sea redirigido a www.example.com, debe usar un servidor predeterminado en lugar de un servidor de expresión regular.

Por ejemplo:

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

Vereste documentopara más.

información relacionada