apache实现企业自定义二级域名管理-mod_rewrite
目的
最近公司在做电子商务网站,需要做各个企业的电子商务网站,就如淘宝一样,给每个淘宝商铺开设*.taobao.com的二级域名,策划部门为了提高客户的新鲜度,也准备这么做;
800年前,当时申请网易的免费个人主页的时候,还在惊奇,网易的DNS管理员太NB了,这么多人的免费主页,如果他要做域名的映射,不得累死才怪,原来有好的办法可以实现的
实验
1、安装apache,我安装的2.4版本,安装好之后,启动apache
2、修改apache配置文件
第一步、启动rewrite模块,将以下行前面的#删除
LoadModule rewrite_module modules/mod_rewrite.so
第二步、增加虚拟机设置,
test.com 你要测试的域名
C:/Program Files/Apache Software Foundation/Apache2.2/htdocs web服务器默认目录,可以自行修改
<VirtualHost localhost:80> ServerName *.test.com ServerAlias *.test.com RewriteEngine on DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" RewriteLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/rewrite.log" RewriteCond %{HTTP_HOST} ^[A-Za-z0-9\-]+\.test\.com$ RewriteRule ^/(.*)$ /%{HTTP_HOST}/$1 RewriteRule ^/([A-Za-z0-9\-]+)\.test\.com/(.*)$ "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/$1/$2" [L] </VirtualHost>
第三步、修改C:\WINDOWS\system32\drivers\etc配置
因为没有外网实际环境,只能通过hosts文件来模拟外网DNS环境了,增加如下行
127.0.0.1 a.test.com 127.0.0.1 b.test.com 127.0.0.1 www.test.com
第四步、重启apache
第五步、在C:/Program Files/Apache Software Foundation/Apache2.2/htdocs目录下建立以下目录a和b目录,并防止不同的html文件
第六步、打开ie,输入a.test.com看看效果,配置成功
生产环境
在介绍之前先简单介绍下什么是
泛域名解析
1、设置DNS泛域名解析,将所有*.test.com全部指向到配置好的apache服务器;
2、设置一个跳转页面,通过域名查找到企业的ID,然后转到标准的企业展示页面
什么是泛域名解析?
泛域名解析是指将*.域名解析到同一IP。
在域名前添加任何子域名,均可访问到所指向的WEB地址。也就是客户的域名#.com之下所设的*.#.com全部解析到同一个IP地址上去。
比如客户设1.#.com就会自己自动解析到与#.com同一个IP地址上去。
泛域名解析域名域名解析的区别?
泛域名解析是:*.域名解析到同一IP。
域名解析是:子域名.域名解析到同一IP。
注意:只有你的空间是独立IP的时候泛域名才有意义。而域名解析则没有此要求。
问题
测试中发现一个比较麻烦的问题,那就是如何处理www.test.com,因为按照rule中的正则表达式,www也是要跳转的,解决该问题的办法就是
1、在web目录下开设一个WWW目录,放置网站的首页
2、WWW.test.com和二级域名的IP地址指向不是同一台机器,也可以解决此问题