Проблема с заменой доменов без 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"?

1
задан 1 March 2018 в 22:01
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;
    ...
}

Смотрите этот документ для более подробной информации

.
3
ответ дан 3 December 2019 в 18:28

Теги

Похожие вопросы