要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.你的网址.us和 *.你的网址.cn全部解析到了我的IP地址70.40.213.183上。
然后,看一下我的Apache中关于*.你的网址.us的虚拟主机的设定。
代码如下
ServerAdmin webmaster@你的网址.us
DocumentRoot /home/www/www.你的网址.us
ServerName dns.你的网址.us
ServerAlias dns.你的网址.us 你的网址.us *.你的网址.us
CustomLog /var/log/httpd/osa/access_log.log” common
ErrorLog /var/log/httpd/osa/error_log.log”
AllowOverride None
Order deny,allow
#AddDefaultCharset GB2312
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+.你的网址.(cn|us)$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).你的网址.(cn|us)(.*)$ /home/www/www.你的网址.us/sylvan$3?un=$1&%{QUERY_STRING} [L]
在这段设定中,我把*.你的网址.cn和*.你的网址.us 的Document Root都设定到了 /home/www/www.你的网址.us
Rewrite规则表达式的说明:
. 匹配任何单字符
[chars]
匹配字符串:chars
[^chars]
不匹配字符串:chars
text1|text2
可选择的字符串:text1或text2
?
匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
n
转义符标志
反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond
中最后一个匹配的变量调用(1 <= N <= 9)
RewriteCond标志符
'nocase|NC'(no case)忽略大小
'ornext|OR' (or next condition)逻辑或,可以同时匹配多个RewriteCond条件
RewriteRule适用的标志符
'redirect|R [=code]' (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化)
如:[R=301,L]