Как перенаправить www на не-www в nginx

#nginx #nginx-config

#nginx #nginx-конфигурация

Вопрос:

Это моя текущая конфигурация nginx:

 server {  server_name mydomain.com www.mydomain.com;   listen 443 ssl;  ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;  ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;  include /etc/letsencrypt/options-ssl-nginx.conf;  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; }  server {  if ($host = www.mydomain.com) {  return 301 https://$host$request_uri;  }   if ($host = mydomain.com) {  return 301 https://$host$return_uri;  }   server_name mydomain.com www.mydomain.com  listen 80;  return 404; }  

Это работает нормально, но мне www тоже нужно перенаправить non-www . Как это сделать?

Ответ №1:

Попробуйте это:

 location / {  if ($http_host ~* "^www.example.com"){  rewrite ^(.*)$ https://example.com/$1 redirect;  } }  

Комментарии:

1. Это сработало, однако я столкнулся с проблемой, когда клиент добавляет / в конец URL-адреса, перенаправляет на mydomain.com// него и получает 404 ошибку, поэтому я изменил https://example.com/$1 на https://example.com$1 .