我很难找到关于为一个Web服务器上的多个站点设置ISAPI_Rewrite规则的清晰/简明文档。我们需要每个站点都有自己的httpd.ini文件,概述其自己的规则集。此外,每个站点可能使用不同版本的ISAPI_Rewrite模块(必须考虑这一点)。我们正在使用IIS 6.0。
有没有人对如何做到这一点有任何建议?
非常感谢任何帮助!
谢谢,
- 汤姆
答案 0 :(得分:3)
既然你提到httpd.ini,我猜你正在使用isapi_rewrite v2。我建议在IIS 6上升级到v3(对于IIS 7机器,helicon强烈推荐'Ape',我还没试过。)
这假设是isapi_rewrite v3的付费版本;免费软件Lite版本不适用于这个答案。
在v3中,该文件名为.htaccess而不是httpd.ini
每个网站都有自己的.htaccess文件,具有独立的规则。将每个文件放在每个网站的根文件夹中。
对于模块的不同版本,我没有尝试保持安装两个版本,我不确定是否可行。相反,v3有一个RewriteCompatibility2指令,您可以在每个.htaccess文件中包含或省略。这应该允许您在某些网站上使用v2规则,同时在其他网站上使用v3规则。
显然这使得v3与v2兼容,但不是100%的语法匹配。它们为现有规则提供翻译工具。我似乎记得它几乎没有改变任何东西。主要区别在于查询字符串参数处理 - 它在v2规则中是显式的,但在v3中单独处理。 (一旦完全转换为v3,规则就会简单得多。)
以上内容可以解决您的问题,但也有更复杂的配置:
子目录也可以拥有自己的.htaccess文件,这些文件在父文件之后运行。我已经完成了一次处理指向“当前”数据文件夹。
VirtualHost,目录,位置,文件也有指令。 这里概述:http://www.helicontech.com/isapi_rewrite/doc/context.htm。我必须阅读几次,所以请阅读各个指令,以获得更清晰的解释。