Url rewriting URL重写在反向代理301重定向时保留原始主机位置

Url rewriting URL重写在反向代理301重定向时保留原始主机位置,url-rewriting,http-headers,iis-7.5,arr,outbound,Url Rewriting,Http Headers,Iis 7.5,Arr,Outbound,我在IIS 7.5网站上设置了URL重写: 这将充当第二个站点的反向代理: 以下是事件流程: 1.浏览器是否会启动 2.这会传递到site2,因为site1是URL重写反向代理。这工作正常,主机设置正确,因为我已经完成了需要的修改。 3.site2以301状态响应,并将HTTP位置头设置为 4.site1以301响应浏览器,但将位置标题中的主机替换为site1: 我希望在步骤4中发生的是,site1在HTTP位置头中响应,并直接传递这些数据。我觉得必须有一个出站规则可以用来解决这个问题,但还没有

我在IIS 7.5网站上设置了URL重写:

这将充当第二个站点的反向代理:

以下是事件流程:
1.浏览器是否会启动
2.这会传递到site2,因为site1是URL重写反向代理。这工作正常,主机设置正确,因为我已经完成了需要的修改。
3.site2以301状态响应,并将HTTP位置头设置为
4.site1以301响应浏览器,但将位置标题中的主机替换为site1:


我希望在步骤4中发生的是,site1在HTTP位置头中响应,并直接传递这些数据。我觉得必须有一个出站规则可以用来解决这个问题,但还没有弄清楚。

正如我在上面的评论中所说的,我相信反向代理的默认行为是不动就通过响应(假设没有出站重写规则集)。不过,我还没有专门用代理背后服务器的301响应测试您的场景

如果事实上需要特殊的出站规则,则此代码将修改所有301响应的HTTP位置头



可能会牵涉其中吗?查看IIS->计算机或站点->应用程序请求路由缓存->服务器代理设置,并取消选中“在响应头中反向重写主机”复选框。如果您在机器级别执行此操作,它将对所有站点生效。如果您在特定站点上执行此操作,它将仅对该站点生效,框中的其他站点将不受影响。

您是否有任何现有的出站重写规则?根据我的经验,删除出站重写规则会使site2响应保持不变。没有出站规则。我无法在每个站点(preserveHostHeader=True)的基础上启用此功能(仅在ApplicationHost.config级别),你知道为什么吗?助教。史蒂文:如果我能多做100次,我会的。这救了我的命。我花了好几个小时修改反向代理url重写规则,想知道为什么我遇到了大多数人抱怨的相反的问题(他们无法恢复到原始主机)。万分感谢!