nginx переписать все субдомены на www - PullRequest
1 голос
/ 25 января 2012

Я пытаюсь найти правильное регулярное выражение для перезаписи всех поддоменов на www.

, например, с w7w.domain.com на www.domain.com

или alskdaslkdja.domain.com на www.domain.com

Я пробовал много вещей, моя последняя попытка была:

if ($host ~* (?!www\.)(.*))
{
  set $host_without_www www.$1;
  rewrite ^(.*)$ http://$host_without_www$1 permanent; 
}

, но это тоже не сработало.

мне нужночтобы поймать их, и я не могу просто переписать шаблон на www.domain.com, потому что у меня есть несколько доменов, обслуживаемых в этом случае.

есть идеи?

Ответы [ 2 ]

1 голос
/ 25 января 2012
server {
    listen          xx.xx.xx.xx:80;
    server_name     www.example.com;
    # ....
}
server {
    listen          xx.xx.xx.xx:80;
    server_name     example.com *.example.com;
    rewrite         ^ http://www.example.com$request_uri? permanent;
}
0 голосов
/ 25 января 2012
server {
  # Prefix server wildcards are checked before regexes, so this
  # will catch anything starting with www.
  server_name www.*;
}

server {
  # This should redirect anything that didn't match the first
  # server to domain.tld

  # I think this regex will capture the domain.tld
  server_name ~(?<domain>[^.]+\.[^.]+)$

  rewrite ^ http://www.$domain$request_uri? permanent;
}
...