Apache下用rewrite实现动态二级域名解析.docVIP

  • 13
  • 0
  • 约3.03千字
  • 约 5页
  • 2018-05-31 发布于河南
  • 举报

Apache下用rewrite实现动态二级域名解析.doc

Apache下用rewrite实现动态二级域名解析

Apache下用rewrite实现动态二级域名解析 Apache下用rewrite实现动态二级域名解析 [2006-12-27 11:00:05] | 技术转贴 实现动态二级域名解析的一个关键就是,把特有的名字怎么能够提出来,因为RewriteRule中的匹配,是不包括域名的匹配的,其实这其中就是一层窗户纸,把域名先重写放到“路径”中,再对“路径”重写一次就可以了,也就是说加一步过渡。这样说大概还一头雾水,给个实例。 首先按我上次写的文章的那个需求写一个,假设动态解析*.。 注意要先做一个所谓的范域名解析,就是说把所有*.解析到某个IP上去,这不是本文章讨论范围就不细说了。 Apache中相关配置如下: VirtualHost _default_:80 ServerAdmin yourmail@ 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\-]+\.iecn\.cn$ RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1 ##注## RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/(.*)$ /YourWwwRoot/$1/$2 [L] # 没有解析到的情况下扔到自己的一个PHP中做一下处理 RewriteRule ^.*$ /index.php [L] /VirtualHost 注意我标注的地方,那一步就是一个过渡,说一下过程吧,假设现在访问: /xxx 经第一步重写,变成 //xxx 经第二步重写就是 /YourWwwRoot/zhong/xxx 了,其他的操作与我行前说的基本就差不多了。 再举一个可能更常见的实例,假设一个博客系统,要求把 隐式的重写成 /blog.php?u=xxx 这里面的xxx可以看做是一个用户名,想必类似这样的需求大家一定都见过很多了,不过多解释了。 同意先做范域名解析这里不多说。在Apache中做如下重写(只写Rewrite部分了): RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$ RewriteRule ^/?$ /%{HTTP_HOST} RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/?$ /blog.php?u=$1 [L] zz from /blog.php?do=showonetid=1013 Apache下用rewrite实现任意域名的动态解析 Apache的mod_rewrite模块功能非常强大,我以后会写更多的实例出来。 关于mod_rewrite的使用,不想多说,提供两个相关文档的地址: /ftp/FAPM/apache/Apache2/zh/mod/mod_rewrite.html /newsoft/Apache2.2_chinese_manual/mod/mod_rewrite.html 如果你只是想用一个现成的你可以直接把我的copy过去改改,如果想从技术上搞清楚,那么首先要掌握两方面的技术: Apache下mod_rewrite的使用(可参照我上面提供的两个地址) 正则表达式(这是一门在很多地方都非常有用的技术) 废话不多说,说一下我在IECN.NET服务器的实际配置。 我习惯使用NameVirtualHost,如果你的服务器中只想用这种动态的解析,直接在配置文件中做是一样的,如果想保留自己一些特殊站点的配置,还是用NameVirtualHost吧。 在Apache中,如果启用了NameVirtualHost,在没有匹配到的解析的情况下,会默认到第一组VirtualHost中,所以我们的动态解析自然是放到第一组VirtualHost(有关apache的一些配置这里就不多说,自己查阅相关文档。),如下: VirtualHost _default_:80 ServerAdmin yourmail@ DocumentRoot /YourWwwRoot/.default ServerName all-sites ErrorLog logs/all-sites-error_log CustomLog logs/all-sites-access_log common # 下面两行实现动态解析 RewriteCond /YourWwwRoot/%{SERVER_NAME} -d

文档评论(0)

1亿VIP精品文档

相关文档