Apache二级域名实现方法 .

(无意看到,以前的东东,记下来了)

首先,你的拥有一个有泛域名解析的顶级域名,例如: 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。

实现动态二级域名解析的一个关键就是,把特有的名字怎么能够提出来,因为RewriteRule中的匹配,是不包括域名的匹配的,其实这其中就是一层窗户纸,把域名先重写放到“路径”中,再对“路径”重写一次就可以了

对于实现动态域名解析,以下提供几个例子

将*.531163.com解析到指定路径

RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.531163\.com$
  RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1 ##注##
  RewriteRule ^/([a-z0-9\-]+)\.531163\.com/(.*)$ /YourWwwRoot/$1/$2 [L]

这样的结果 zhong.531163.com/xx 解析到了wwwRoot/zhong/xx

假设一个博客系统,要求把
  http://xxx.531163.com
  隐式的重写成
  http://blog.531163.com/blog.php?u=xxx
  这里面的xxx可以看做是一个用户名,想必类似这样的需求大家一定都见过很多了,不过多解释了。

  同意先做泛域名解析这里不多说,解析到某个IP下,在Apache中做如下重写(只写Rewrite部分了):

  RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.531163\.com$
  RewriteRule ^/?$ /%{HTTP_HOST}
  RewriteRule ^/([a-z0-9\-]+)\.531163\.com/?$ /blog.php?u=$1 [L]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值