rule 发表于 2017-1-7 07:26:58

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]
查看完整版本: apache 用rewrite实现二级域名解