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

nginx: перенаправить только субдомен www на основной домен?

Обновление: 20 апреля 2013 г., решение по-прежнему не найдено, помогите

Глядя на мою конфигурацию nginx, единственное, что может быть виновником, это следующее:

server {
        listen 80;
        listen [::]:80 ipv6only=on default_server;
        rewrite ^(.*) https://$host$1 permanent;
}

Буквально мне нужно, чтобы www было перенаправлено на основной домен.

Можно ли это сделать в nginx?

Я немного запутался в этом вопросе, и служба поддержки Godaddy каждый раз говорит мне что-то новое.

Я перенаправил свой домен www в основной домен, и он не работает.

www.domain --> domain.com     Fails

Однако любой другой поддомен, такой как test, может быть без проблем перенаправлен в основной домен.

test.domain --> domain.com    Ok

Godaddy утверждает:

или для этого вам нужно будет настроить www CNAME, который соответствует @. На вашем хосте вы можете настроить закодированное перенаправление https://domain.com в индексном файле или файле .htacess.

Я не понимаю, как этого добиться.

Сначала вы должны настроить свою зону DNS как таковую:

@   IN A <IP ADDRESS>
www IN A <IP ADDRESS>

Используя эту конфигурацию, что-нибудь вроде www.example.com, и example.com будет решено IP ADDRESS который должен быть IP-адресом вашего веб-сервера.

Затем в конфигурации Nginx вы указываете это:

server {
  listen 80;
  server_name example.com;
  return 301 https://example.com$request_uri;
}
server {
  listen 80;
  listen 443 ssl;
  server_name www.example.com;
  return 301 https://example.com$request_uri;
}
server {
  listen 443 ssl;
  server_name example.com;
  ...
}

Кстати, вам не нужно регулярное выражение в этой задаче. Попробуйте, например, этот конфиг.

server {
        listen *:80 default_server;
        listen [::]:80 ipv6only=on default_server;
        return 301 https://domain.com$request_uri;
}