0
我在IIS中定义了以下重写规则,我想要维护它。我遇到的问题是,当此重写后面的应用程序向除本身之外的主机返回HTTP重定向响应(303或307)时,URL重写模块正在更改响应的Location
标头上的主机。 (我已确认URL Rewrite存在错误,因为直接访问站点时没有发现此行为)。 IIS正在这样做,即使我做了而不是也没有定义任何出站规则。如何保持IIS重写传入请求,但是阻止它对传出响应进行未配置和意外处理?阻止IIS Url Rewrite模块修改HTTP 303/307响应
<rule name="ServiceName Rewrite">
<match url="^(ServiceName/)?(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^ServiceName([.]company[.]com)?$" />
</conditions>
<action type="Rewrite" url="http://generic.company.com/ServiceName/{R:2}" />
</rule>
编辑:
为了澄清,我的Web应用程序返回的
HTTP 307
Location: http://somesite.company.com/path/to/item
响应并且IIS无助地改变这
HTTP 307
Location: http://ServiceName.company.com/path/to/item
IIS似乎因为客户需要接收与“其他”的主机的位置重定向响应正常工作。除非重定向响应响应初始请求提供了这个位置,否则客户怎么会知道重定向到哪里? – JohnH
我编辑了这个问题,以更好地阐明发生了什么。我的Web应用程序正在返回一个正确生成的HTTP重定向,它可以在开发过程中以及从不通过URL重写模块的地址访问站点时使用。但是,URL重写模块正在修改输出,使重定向不再起作用。 – erdomke
匹配标签中是否需要问号字符('?')?这可能会导致IIS始终应用重写操作。如果你删除了这个角色会发生什么? – JohnH