wildcard to rewritre multi domains to www

Igor Sysoev is at rambler-co.ru
Sun Sep 6 08:29:09 MSD 2009


On Sat, Sep 05, 2009 at 11:28:14AM -0500, AMP Admin wrote:

> Thanks.  I'll do that.  I was just hoping that I wouldn't have to list all
> domains. That works though. :)

You should use positive logic: configure all sites and redirect
remainder using regex:

server {
     server_name www.domain1.com;
     ...
}

server {
     server_name www.domain2.com;
     ...
}

server {
     server_name www.domain3.com;
     ...
}

server {
     server_name www.*;
     ...
}

server {
     server_name  ~^([^.]\.com)$;
     set          $name  $1;
     rewrite      ^      http://www.$name$request_uri?  permanent;
}

nginx tests server names for the first match in following order:
1) exact names,
2) *.name wildcards,
3) name.* wildcards, 
4) regex names in order of their appearance.

> Regards, 
> 
> -Team AMP 
> http://www.ampprod.com 
> 
> -----Original Message-----
> From: owner-nginx at sysoev.ru [mailto:owner-nginx at sysoev.ru] On Behalf Of Igor
> Sysoev
> Sent: Saturday, September 05, 2009 9:21 AM
> To: nginx at sysoev.ru
> Subject: Re: wildcard to rewritre multi domains to www
> 
> On Sat, Sep 05, 2009 at 08:57:57AM -0500, AMP Admin wrote:
> 
> > Hi, I would like to rewrite several domains to from .example.com to
> > www.example.com.  I think the best way is to use a wild card.  Too bad I
> > suck at rewrite rules. Haha
> > 
> > Can someone help me make the following work?
> > 
> >         if ($host != 'www.*.com') {
> >                 rewrite  ^/(.*)$  http://www.*.com/$1  permanent;
> >         }
> 
> server {
>      server_name  ~^((?:domain1|domain2|domain3)\.com)$;
>      set          $name  $1;
>      rewrite      ^      http://www.$name$request_uri?  permanent;
> }
> 
> 
> -- 
> Igor Sysoev
> http://sysoev.ru/en/
> 

-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list