IIS 重写全局规则仅适用于默认文档

IIS Rewrite Global Rule working on Default Document Only

迁移服务器并在 IIS 中遇到 URL Rewrite 问题。该规则在我们之前的服务器上运行良好,但该规则仅在基域地址的默认文档上才能正常运行。该规则在 IIS 中配置为全局规则。

规则 有效 在:domain.com/

规则失败在:域。com/any-address-here

规则详情: 我们正在匹配所有内容,获取传入的 IP 地址并将其传递给我们的 header。这是在 IIS 中配置的,并在 (/Windows/System32/insetsrv/config/applicationHost.config) 文件中进行了验证。服务器软件:Windows 2012R2。使用 IIS 8.5.9600.16384 和 Microsoft URL 重写模块 2.

<match url="(.*)" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
    <add input="{HTTP_X_Forwarded_For}" pattern="^([0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3})(.)*$" />
</conditions>
<serverVariables>
    <set name="REMOTE_ADDR" value="{C:1}" />
</serverVariables>
<action type="Rewrite" url="{R:0}" />

任何见解将不胜感激,非常感谢!

简单的解决方法,不是解决方法。全局规则在 IIS 中根本没有被完全识别,因此规则被重新配置为分布式规则。 IIS 然后识别规则,但我们收到 500 条错误消息。我们需要添加服务器变量才能成功完成重写。

旁注。我们已经从 Microsoft 网站将 URL Rewrite 作为独立应用程序安装,但在了解了这可能会带来的问题之后 - 我们按照建议通过 Web 平台管理器重新安装了 URL Rewrite 应用程序。这对上面的全局规则与默认文档重写问题没有影响。

感谢 Lex 和 Jokies 的意见和时间!非常感谢。