浏览 8674 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-23
如果是用Apache就简单多了,默认的Rewrite模块功能强大,可以轻松提取主机头信息。 具体内容: 0、首先需要一个有效的顶级域名,并且设置该域名下二级域名的泛解析到虚拟主机所在服务器IP(即如:*.eboat.cn => 123.234.55.101)。 1、在http://www.helicontech.com/download.htm下载ISAPI_Rewrite Lite Free版本。版本不用太高,如果愿意付点$,用Full版当然也不错哦。安装,随便装在哪个位置。 注意:Lite版本不支持虚拟主机层次的配置,但仅仅是配置(就是dll只能读取自身安装目录下的全局配置httpd.ini)。如果是仅用于某虚拟主机的任意二级域名解析,可以将ISAPI_Rewrite.dll仅放置在该虚拟主机的配置中(即不在IIS的“网站>ISAPI筛选器”中插入,而是添加在虚拟主机网站的ISAPI筛选器中),这样就不会影响服务器对其它网站的处理。 2、将需要二级域名的虚拟主机的主机头置空,使得所有未在服务器上单独配置的虚拟主机域名都被定向到此处。注意!不是在服务器上单独新建一个无主机头的网站,必须在需要实现二级域名的当前网站上进行URL的Rewrite配置。这点很重要。 3、将ISAPI_Rewrite安装时自动配置在IIS中的全局设定取消(IIS>网站>ISAPI筛选器,删除ISAPI_Rewrite),在需要二级域名解析的虚拟主机(网站)中配置ISAPI_Rewrite.dll(属性>ISAPI筛选器>添加...,名称可以随便写,如Url-Rewrite)。 4、修改ISAPI_Rewrite安装目录下的配置文件httpd.ini。举例如下: [ISAPI_Rewrite] RepeatLimit 1 # Defend your computer from some worm attacks RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O] # 排除当前虚拟主机需要正常访问的域名(web.eboat.cn www.eboat.cn) # RewriteCond Host: (?:web|www)\.eboat\.cn # 多数情况下是一个,即当前提供二级域名服务的系统(如建站系统) RewriteCond Host: web\.eboat\.cn RewriteRule (.*) $1 [L] # 解决不规范目录(末尾无/)的问题 # 但前提是目录名不含‘.’而文件名必须包含,否则无法区分两者 # 如果保证URL中的目录名称规范,则无需此规则 RewriteRule ^/([^.]+[^/]$) /$1/ [L,R] # 提取任意的二级域名名称(即第一个词汇) # 用[a-zA-Z0-9_-]限制名称字符,重写Url到Home/子目录下 # 如 test.eboat.cn => web.eboat.cn/Home/test RewriteCond Host: ([a-zA-Z0-9_-]+)\.eboat\.cn RewriteRule ^/(.*) /Home/$1/$2 [I,L] 注意!上面的规则不能写成 RewriteRule ^/(.*) http\://web\.eboat\.cn/Home/$1/$2 [I,L] 这也是必须在系统所在网站上解析的原因。如果最后是[I,R],访问是可以的,但是浏览器的地址栏会显示实际的Url,达不到透明二级域名的效果。 总结: 之前查了Google,没找到简单实现的例子。其实这主要是规则上的问题,即使是将ISAPI_Rewrite放在IIS的“网站”全局配置中也是可以的,因为规则不会匹配其它的网站(顶级域名限制),Rewrite不会起作用。只是放在全局配置中,访问其它网站也要经过这个.dll过滤器,或多或少的有些不合理。 成功配置和运行,网上说要用Full的破解版才行(1.x的版本,试过可行)。所以这里特地将Lite免费版的用法贴出来。 (注意:最后可能需要重启IIS服务器,检查一下ISAPI过滤器中Rewrite是否已经载入——绿色的向上箭头。另外,如果是NTFS文件系统,ISAPI_Rewrite的安装目录需要添加网站用户或everyone的写权限!) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |