需求背景:
系统中用户注册后会根据id生成其主页,如http://www.test.com/index/2
用户希望实现一级域名绑定,即,通过访问http://www.demo.com也能直接访问到其主页
我们系统采用的是apache + tomcat的环境,通过apache访问静态资源。
apache + tomcat的搭建配置不属于本文讨论范围。
解决方法,在apache的配置文件中加入vhost
<VirtualHost *:80>
#申请的一级域名,根据实际情况修改
ServerName www.demo.com
ServerAlias www.demo.com
DocumentRoot "/home/test/statics"
RewriteLogLevel 1
ErrorLog logs/demo_error.log
CustomLog logs/demo_cn.log common
<Directory "/home/test/statics">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
RewriteEngine on
#下行中的“2”为该用户的id号,根据实际情况修改
RewriteRule ^/$ /index/2 [R,L]
ProxyPass /images/ !
ProxyPass /swf/ !
ProxyPass /scripts/ !
ProxyPass /css/ !
ProxyPass / balancer://tomcatcluster/
ProxyPassReverse / balancer://tomcatcluster/
<Proxy balancer://tomcatcluster>
BalancerMember ajp://127.0.0.1:8009 route=jvmtest
</Proxy>
</VirtualHost>
添加完vhost后,重启下httpd服务,就实现了一级域名绑定。
顺便说一个很简单的二级域名绑定方式
在www.test.com的vhost中添加如下内容:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[0-9]+\.test.com$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/([0-9]+)\.test\.com/?$ /index/$1 [R,L]
这样通过访问http://2.test.com也能范围到http://www.test.com/index/2中同样内容了
apache域名绑定的关键是urlrewrite,需要一点正则表达的知识。
如果有需要帮助的,给我留言就ok了,我会尽力帮忙的