2014-07-23 22 views
1

我設置了服務器變量可用我的IIS服務器調用COUNTRY_PATHISS URL重寫與應用程序請求路由:服務器變量不可用

我做一個反向代理服務器從一個站點重寫到另一個需要訪問這個服務器變量在我的代理站點中。但它似乎從來沒有價值。

<rule name="Country Codes For DotCom" stopProcessing="true"> 
    <match url="^([A-Z]{2,2})(/)(microsite)(.*)" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
      <add input="{HTTP_HOST}" pattern="\.com$" /> 
    </conditions> 
    <serverVariables> 
      <set name="COUNTRY_PATH" value="{R:1}{R:2}{R:3}" /> 
    </serverVariables> 
    <action type="Rewrite" url="http://internal.example.com/{R:1}{R:2}{R:3}{R:4}" /> 
</rule> 

服務器變量是否可用於反向代理?

,我用下面的代碼來獲取服務器變量:

string countryPath = HttpContext.Current.Request.ServerVariables["COUNTRY_PATH"] 

任何人都可以提出什麼,我做錯了什麼?

+0

另一位用戶已經實現重寫提供一個類似的問題:HTTP: //stackoverflow.com/questions/23900415/custom-rewrite-provider-for-url-rewrite-module – lat3ncy

回答

0

當您將服務器變量添加到允許的服務器變量中以及在重寫serverVariable元素中引用服務器變量時,需要使用「HTTP_」作爲服務器變量的前綴。通過使用內建類型下拉功能來確認您是否正確完成此操作的簡單方法是:輸入{H,然後從可用選項中選擇{HTTP_COUNTRY_PATH}。

更全面的解釋,請閱讀下面的文章的以下部分:使用入站重寫規則來設置請求頭和服務器變量

http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-20-configuration-reference

+0

謝謝,但我不認爲這是事實。我已經使用過未使用HTTP前綴的服務器變量。正如本文在IIS.net中討論的那樣,他們設置了一個名爲ORIGINAL_URI的服務器變量:http://www.iis.net/learn/extensions/url-rewrite-module/setting-http-request-headers-and-iis-服務器變量 –

+0

如果內存正確地爲我提供服務,那麼當我第一次創建新的服務器變量時,這是確切的文章,它在背後咬我。當我發佈時,我在移動設備上,現在我添加了一個參考來支持我的答案。 – lat3ncy

+0

一個進一步的評論:如果你不使用它,失敗的請求追蹤,如果你的朋友。 – lat3ncy

相關問題