Назад | Перейти на главную страницу

Проблемы с заменой доменов без www в nginx

Я использую CentOS 7 с Nginx. Я хочу преобразовать все домены без 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"?

Если вы только хостинг 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;
    ...
}

Видеть этот документ для большего.