Apache rewrite based on subdomain

39,231

Solution 1

You should have a look at the URL Rewriting Guide from the apache documentation.

The following is untested, but it should to the trick:

RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.domain\.com$
RewriteRule ^/(.*)$           http://blah.domain.com/%1/$1 [L,R] 

This only works if the subdomain contains no dots. Otherwise, you'd have to alter the Regexp in RewriteCond to match any character which should still work due to the anchoring, but this certainly feels safer.

Solution 2

Try this:

RewriteCond %{HTTP_HOST} (.+)\.blah\.domain\.com
RewriteRule ^(.+)$ /%1/$1 [L]

@pilif (see comment): Okay, that's true. I just copied a .htaccess that I use on one of my projects. Guess it has a slightly different approach :)

Solution 3

@Sam

your RewriteCond line is wrong. The expansion of the variable is triggered with %, not $.

RewriteCond %{HTTP_HOST} ^([^\.]+)\.media\.xnet\.tk$
            ^

that should do the trick

Share:
39,231
Sam
Author by

Sam

Web developer from Ipswich, UK

Updated on December 25, 2020

Comments

  • Sam
    Sam over 3 years

    I'm trying to redirect requests for a wildcard domain to a sub-directory.
    ie. something.blah.example.com --> blah.example.com/something

    I don't know how to get the subdomain name to use in the rewrite rule.

    Final Solution:

    RewriteCond %{HTTP_HOST} !^blah\.example\.com
    RewriteCond %{HTTP_HOST} ^([^.]+)
    RewriteRule ^(.*) /%1/$1 [L]
    

    Or as pointed out by pilif

    RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.example\.com$
    
  • pilif
    pilif almost 16 years
    your solution does not redirect to blah.domain.com but just rewrites to something.blah.domain.com/something, which is not how I read the original question.
  • T Percival
    T Percival almost 16 years
    I guess that is OK if they are both served by the same VirtualHost. In particular, doing it this way means the client doesn't see the redirection - they still see something.blah.example.com.
  • Sam
    Sam almost 16 years
    HA! the one character typo strikes again :(
  • marcovtwout
    marcovtwout over 11 years