wildcard to rewritre multi domains to www

Cliff Wells cliff at develix.com
Mon Sep 7 22:06:41 MSD 2009


On Mon, 2009-09-07 at 13:44 +0300, Marcus Clyne wrote:
> Hi,
> >> I think if you look at your regex again, you'll see that it's not that 
> >> it doesn't match any domains with sub domains, it matches any domains 
> >> with a dot somewhere in the middle.  The \. guarantees that there's a 
> >> dot, but the other characters can be anything.
> >>     
> >
> > Ah, so instead of .+ it'd need to be [^.]+ as in:
> >
> > server_name ~(^[^.]+\.[^.]+$);
> >   
> That would be fine - for domains with just the top level domain before 
> the main name, e.g. test.com.  However, if you also deal with URLs with 
> a country code as well, e.g. test.co.uk, it's not going to capture them 
> because they'll look like the subdomains you were trying to avoid 
> capturing.  You could create a rather complex RE using all the country 
> codes and tld's to fully capture only the main domain, and no 
> sub-domains, but it'd be pretty long and would probably waste 
> considerable processing time.  Personally, I like to keep things simple. :-)

Well, my guess is that there's no general regex that's going to cover
the case of say:

files.domain.com -> files.domain.com
test.co.uk -> www.test.co.uk

I think the OP would have to make a choice based on his subset of
domains or setup special locations for places like files.domain.com
(which would probably be the right solution).

Cliff







More information about the nginx mailing list