Apache2 VirtualHost auto subdomain
I just got myself a brand new Linux-server (Debian Stable). The server is primarily used for webhosting and webdevelopment.
I installed Apache2, PHP5 and MySQL and it all works.
The way I organize my sites, is with the following path: /var/www/username/website.com
Now I wan't the server to automatically "make"/recognize subdomains.
/var/www/username/sub.website.com > http://sub.website.com
I wan't the above to happen automatically. How to do that?
Solution 1:
The best way to do it would be to put links to all sites in a specific directory and do something like this :
<VirtualHost *:80>
RewriteEngine On
RewriteMap lowercase int:tolower
# if already rewitten and we have the right path, stop right here
RewriteRule ^(/where/your/sites/are/[^/]+/.*)$ $1 [L]
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^(www\.)?([^/]+)/(.*)$ /where/your/sites/are/$2/$3 [L,E=VHOST_ROOT:/where/your/sites/are/$2/]
</VirtualHost>
Solution 2:
You can use mass virtual hosting. In your case you will not be able to use it in the main apache configuration because of '/username/' in the path but you can create a virtualhost per user then use mass virtual hosting in the virtual host.
Example:
<VirtualHost *:80>
ServerName domain.tld
ServerAlias *.domain.tld
VirtualDocumentRoot /var/www/user1/%0/
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.tld
ServerAlias *.domain2.tld
VirtualDocumentRoot /var/www/user2/%0/
</VirtualHost>
...
With mod rewrite you can them make domain.tld to rewrite to point to the www directory