apache 用rewrite实现二级域名解

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

实例:动态解析*.i-css.cn。

1: 前提首先你的使用的域名解析器是提供二级域名解析的功能的。一般正规的域名服务器都可以做到这点的;
ping XXXX.i-css.cn
如果你发现和 ping www.i-css.cn 结果一样可以解析到你的ip的话,那就说明你的域名服务器支持这个功能。


2:Apache中相关配置如下:

<VirtualHost _default_:80>
 ServerAdmin [email protected]
 DocumentRoot /YourWwwRoot/.default
 ServerName all-sites
 ErrorLog logs/all-sites-error_log
 CustomLog logs/all-sites-access_log common
 
 # 下面三行实现动态解析
 RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.i-css\.cn$ [NC]
 RewriteCond %{HTTP_HOST} !^www\. [NC]
 RewriteCond %{REQUEST_URI} ^[.]*\?[.]*$
 RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1
 RewriteRule ^/([a-z0-9\-]+)\.i-css\.cn/(.*)$ /YourWwwRoot/$1/$2 [L]
 
 
 # 下面三行实现动态解析
 RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.i-css\.cn$ [NC]
 RewriteRule ^/?$ /%{HTTP_HOST}
 RewriteRule ^/([a-z0-9\-]+)\.i-css\.cn/?$ /shop.action?u=$1 [L]
</VirtualHost>


先解释一下配置
 1)
 RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.i-css\.cn$ [NC]
 
 RewriteCond 设置跳转条件;
 访问的域名是以字母、数字、中划线开头的.i-css.cn
 
 2)
 RewriteRule ^/?$ /%{HTTP_HOST}
 RewriteRule 重写规则
 http://aaa.i-css.com ==> http://aaa.i-css.com/aaa.i-css.com
 
 3)
 RewriteRule ^/([a-z0-9\-]+)\.i-css\.cn/?$ /shop.action?u=$1 [L]
 将上面转发的目录中,获取用户的店铺ID

 http://aaa.i-css.com/aaa.i-css.com ==> http://aaa.i-css.com/shop.action?u=aaa

猜你喜欢

转载自shiguanghui.iteye.com/blog/1874761