Howto make this with htacess:
a.domain.com -> domain.com/a
b.domain.com -> domain.com/b
.
.
.
z.domain.com -> domain.com/z
i try :
RewriteCond %{HTTP_HOST} ^(.*).domain.com$ [NC]
RewriteRule (.*) %1/$1 [L]
but 500 error
Try this:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteRule ^(.*)$ %1/$1 [L,QSA]
Possible Problems:
RewriteEngine on
above your code?mod_rewrite
installed/enabled?Very similar to: mod_rewrite is ignoring rules in subdirectories
Unfortunately, the rules you have got will not work (to be precise: they actually work -- URL got rewritten .. but then after Apache sees [L]
flag it goes to another iteration .. where it gets rewritten again .. and again -- entering endless loop which Apache has to break at some point).
You have to add some condition which will break the iteration completely. There few possible ways of doing it (depends on the rest of your rules, you can read a bit more here -- performance impact of order of rewrite rules when using apache mod_rewrite ).
I have modified the rule by adding 2 more conditions which makes it to rewrite ONLY IF destination DOES EXIST.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
RewriteRule (.*) %1/$1 [L,QSA]
So .. how it works. We will use this URL as an example: http://home.domain.com/kaboom.txt
.
domain.com/home/kaboom.txt
DOES NOT exist -- nothing happends.http://home.domain.com/home/kaboom.txt
(the full URL). Apache goes to next iteration. There it checks does domain.com/home/home/kaboom.txt
exists. Most likely not (unless you have subfolders with the same name as sub-domain) and no more rewriting occurs -- job is done.