我很难找到关于为生活在一个 Web 服务器上的多个站点设置 ISAPI_Rewrite 规则的清晰/简洁的文档。我们需要每个站点都有自己的 httpd.ini 文件,该文件概述了自己的规则集。此外,每个站点可能使用不同版本的 ISAPI_Rewrite 模块(必须考虑到这一点)。我们使用的是 IIS 6.0。
有没有人对如何去做这件事有任何建议?
任何帮助将不胜感激!
谢谢,
-汤姆
我很难找到关于为生活在一个 Web 服务器上的多个站点设置 ISAPI_Rewrite 规则的清晰/简洁的文档。我们需要每个站点都有自己的 httpd.ini 文件,该文件概述了自己的规则集。此外,每个站点可能使用不同版本的 ISAPI_Rewrite 模块(必须考虑到这一点)。我们使用的是 IIS 6.0。
有没有人对如何去做这件事有任何建议?
任何帮助将不胜感激!
谢谢,
-汤姆
既然你提到了 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、Directory、Location、Files 的指令。此处概述:http ://www.helicontech.com/isapi_rewrite/doc/context.htm 。我不得不读了几次,所以请阅读各个指令以获得更清晰的解释。