Thought I would make a post for all you developers out there.
I try and avoid WordPress Multisite/Network when I can.
But I often find I have to setup many sites for testing.
I thought I would share a quick and easy way to do this via .htaccess and apache 1.3 or 2.x
First your apache entry for httpd.conf
192.168.1.180 is the domains ip address for this example, and mydomain.com is the domain you are setting this method up for.
Remember you need to add a *.mydomain.com entry either into your dns, or via your dns control panel with your host.
Code:
<VirtualHost 192.168.1.180>
ServerName mydomain.com
ServerAlias www.mydomain.com *.mydomain.com
DocumentRoot /home/chris/public_html
<Directory "">
Options ALL -Indexes
AllowOverride ALL
</Directory>
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ErrorLog /home/chris/public_html/logs/error.log
CustomLog /home/chris/public_html/logs/access.log common
CustomLog /home/chris/public_html/logs/referer.log referer
</VirtualHost>
Now for the htaccess bit.
You will want to make a subdirectory in your mydomain.com directory called subs
here is the apache entry for 2.x
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*\.)?([^\.]+)\.mydomain\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/subs/%2%{REQUEST_URI}/ -d
RewriteRule [^/]$ http://%2.mydomain.com%{REQUEST_URI}/ [R=301,L]
RewriteCond %{HTTP_HOST} ^.*\.([^\.]+\.mydomain\.com)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^(www\.)?mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.mydomain\.com$ [NC]
RewriteCond %1:::%{REQUEST_URI} !^(.+):::/subs/\1(/.*)?$ [NC]
RewriteCond %{DOCUMENT_ROOT}/subs/%1/ -d
RewriteRule ^(.*)$ /subs/%1/$1 [QSA,L]
this will map subdomain.mydomain.com to the /subs directory
so create a subdirectory in /subs say for links, which would be mapped to links.mydomain.com
so now links.mydomain.com will serve files in /subs/links.
For those running apache 1.3 here is the correct htaccess
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*\.)?([^\.]+)\.mydomain\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/subs/%2%{REQUEST_URI}/ -d
RewriteRule [^/]$ http://%2.mydomain.com%{REQUEST_URI}/ [R=301,L]
RewriteCond %{HTTP_HOST} ^.*\.([^\.]+\.mydomain\.com)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^(www\.)?mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.mydomain\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/subs/%1/ -d
RewriteRule ^(.*)$ /subs/%1%{REQUEST_URI} [QSA,L]
so now you can create subdirectories, say files, links, hello, etc and those will all be sub domains on mydomain.com
I find this easier for me to develop without adding entries each time to my server config.
