2016-09-29 55 views
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 
+0

IIS似乎因爲客戶需要接收與「其他」的主機的位置重定向響應正常工作。除非重定向響應響應初始請求提供了這個位置,否則客戶怎麼會知道重定向到哪裏? – JohnH

+0

我編輯了這個問題,以更好地闡明發生了什麼。我的Web應用程序正在返回一個正確生成的HTTP重定向,它可以在開發過程中以及從不通過URL重寫模塊的地址訪問站點時使用。但是,URL重寫模塊正在修改輸出,使重定向不再起作用。 – erdomke

+0

匹配標籤中是否需要問號字符('?')?這可能會導致IIS始終應用重寫操作。如果你刪除了這個角色會發生什麼? – JohnH

回答

1

我有與我的重定向相同的問題。

什麼工作對我來說是:

  1. 在IIS管理器轉到您的服務器
  2. 輸入應用程序請求路由緩存
  3. 在操作去服務器代理設置
  4. 禁用複選框「在響應標題中反向重寫主機
  5. 重新啓動服務器