apache 用rewrite实现二级域名解
实现动态二级域名解析的一个关键就是,把特有的名字怎么能够提出来,因为RewriteRule中的匹配,是不包括域名的匹配的,所以把域名先重写放到“路径”中,再对“路径”重写一次就可以了
实例:动态解析*.i-css.cn。
1: 前提首先你的使用的域名解析器是提供二级域名解析的功能的。一般正规的域名服务器都可以做到这点的;
ping XXXX.i-css.cn
如果你发现和 ping www.i-css.cn 结果一样可以解析到你的ip的话,那就说明你的域名服务器支持这个功能。
2:Apache中相关配置如下:
<VirtualHost _default_:80>
ServerAdmin yourmail@domain.com
DocumentRoot /YourWwwRoot/.default
ServerName all-sites
ErrorLog logs/all-sites-error_log
CustomLog logs/all-sites-access_log common
# 下面三行实现动态解析
RewriteCond %{HTTP_HOST} ^+\.i-css\.cn$
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{REQUEST_URI} ^[.]*\?[.]*$
RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1
RewriteRule ^/(+)\.i-css\.cn/(.*)$ /YourWwwRoot/$1/$2
# 下面三行实现动态解析
RewriteCond %{HTTP_HOST} ^+\.i-css\.cn$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/(+)\.i-css\.cn/?$ /shop.action?u=$1
</VirtualHost>
先解释一下配置
1)
RewriteCond %{HTTP_HOST} ^+\.i-css\.cn$
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 ^/(+)\.i-css\.cn/?$ /shop.action?u=$1
将上面转发的目录中,获取用户的店铺ID
http://aaa.i-css.com/aaa.i-css.com ==> http://aaa.i-css.com/shop.action?u=aaa
页:
[1]