default nginx rewrite with regexp

Yoann Moulin yoann at virtua.ch
Mon Nov 17 13:22:48 UTC 2014


Hello,

I'm working on a default server_name that match everything but www.domain.tld
then rewrite to www.domain.tld. I use nginx 1.2.1-2.2+wheezy3 with a big regexp.

I have an issu with tld that contain a dot (co.uk co.au net.au, etc...).

I must be able to make a difference between domain.co.uk and foo.domain.com
first must rewrite www.domain.co.uk second, to www.domain.com

Previously, I had this regexp that does not working with any tld that contain a
dot :

> server_name ~^((?<subdomain>(w(w[^w]?.*)?)|([^w]?.*))\.)?(?<domain_name>[^.]+)\.(?<tld>[^.]+)$;
> rewrite ^ http://www.$domain_name.$tld$request_uri? permanent ;

Now I tryto do something like that :

> server_name "~^((?<subdomain>(w(w[^w]?.*)?)|([^w]?.*))\.)?(?<domain_name>[^.]+)(?<tld>((\.[^.]{1-3}\b){1,2}))$";
> rewrite ^ http://www.$domain_name$tld$request_uri? permanent ;

But I don't find any clean solution. Is there a solution for that ? or I must
still list all domains in my vhost ?

Best regards

-- 
Yoann Moulin



More information about the nginx mailing list