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