一. 利用 Apache 的 rewrite_module
引用:
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com
其次,在 httpd.conf 中打开 mod_rewrite
之后,在 httpd.conf 的最后,添加以下内容:
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
然后,在这个所在路径的目录下创建一个文件: vhost.map
内容为:
www.domain.com /usr/local/www/data-dist/domain
bbs.domain.com /usr/local/www/data-dist/bbs
anyname.domain.com /usr/local/www/data-dist/anyname
以上部分都是:" 域名+空格+绝对路径" 的形式。
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
domain , bbs , anyname 等等,理论上可以无限。
这样,通过浏览器,访问 www.domain.com 时,实际****问的就是 /usr/local/www/data-dist/domain目录下的文件。
同理,访问 bbs.domain.com 实际****问的就是 /usr/local/www/data-dist/bbs 目录下的文件。
而且,你可以随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
方法二. 利用 Apache 的 mod_vhost_alias
引用:
#LoadModule vhost_alias_module modules/mod_vhost_alias.so 去掉前面的#
<VirtualHost 127.0.0.1:80>
ServerAdmin hhyisw@163.com
ServerName x.com
UseCanonicalName Off
VirtualDocumentRoot /www/%1.1/%1.1%1.2/%0
</VirtualHost>
这样的话域名: www.x.com 指向 /www/w/ww/www.x.com
域名:bottle.x.com 指向 /www/b/bo/bottle.x.com
而且新建站分只要建相应目录就可以了,比如新建 new.x.com
那么只要创建目录 /www/n/ne/new.x.com
不用重启Apache
说明:
%0 = 完整的域名 ex: www.stksky.com
%1 = www
%1+ = www.stksky.com
%1.1 = w
%1.2 = w
%1.3 = w
%2 = stksky
%3+ = stksky.com
%2.1 = s
%2.2 = t
%2.3 = k
.......
%3 = com
%3+ = com
%3.1 = c
.......