::  Posts  ::  RSS  ::  ◂◂RSS  ::  Contact

Redirecting all subdomains to www in nginx with virtual hosting

June 17th, 2011
nginx, tech  [html]
If you look for how to redirect to 'www.example.com', you see people writing something where you have to know the hostname, or you have to know all subdomains. What if we need to be much more general, because this server hosts multiple domains, someone might come in on arbitrary subdomain, and we want all requests to go to 'www.REQUESTED_DOMAIN.com'? I came up with the following (it goes in the 'server' block'):
        server_name   ~^(?<subdomains>.+\.)?(?<domain>[^.]+\.[^.]+)$;

        if ($subdomains != www.) {
          rewrite  ^/(.*)$  http://www.$domain/$1  permanent;
        }
  
This will do:
  • www.example.com: no change
  • example.com: www.example.com
  • mail.example.com -> www.example.com
  • mail.example2.com -> www.example2.com
  • foo.bar.baz.example.com -> www.examplecom
Note that it assumes only one level of tld. So if your site is '.co.uk' or something, it will redirect all requests to 'www.co.uk', which is unlikely to be what you want.

Recent posts on blogs I like:

No need to explain

I haven’t been posting much lately for several reasons, but mainly I just haven’t felt the desire to post. My posts usually come from trying to figure something out through reflection, or to explain myself to myself. I haven’t felt the need to explain mys…

via Holly Elmore December 8, 2019

Grad school is worse for public health than STDs

(The way you can *really* tell something is horribly wrong is that grad students find PhD Comics darkly funny, not just dark.)

via benkuhn.net December 8, 2019

I’m Giving a Talk About Construction Costs Tomorrow

By popular demand, I’m giving the talk I gave 2 weeks ago at NYU, again. The database will be revised slightly to include more examples (like Ukraine, which I added between when I gave the talk and when I blogged about it), and I may switch around a few t…

via Pedestrian Observations December 2, 2019

more     (via openring)

More Posts:


  ::  Posts  ::  RSS  ::  ◂◂RSS  ::  Contact