2014-01-21 49 views
1

我正在使用IIS 7.5和UrlRewrite Module 2.我已閱讀模塊here的官方文檔以及SO上的許多示例,並在Regexpal上測試了我的正則表達式。不知怎的,翻譯到Web.config文件導致我的問題。我也嘗試過逃避偏見。IIS RewriteUrl RegularExpression

我使用的正則表達式是:

^partners/(var|distributors|msp|techpartners)/(na|emea|apac)(|/)(.*) 

幾個例子網址:

partners/var/emea 

partners/msp/apac/ 

partners/var/na/abcdabcdabcd 

這裏是web.config中我到目前爲止:

<rules> 
    <rule name="partnersListing" enabled="true" stopProcessing="true"> 
    <match url="^partners/(var|distributors|msp|techpartners)/(na|emea|apac)(|/)(.*)" /> 
    <action type="Rewrite" url="partnersList.aspx?type=${R:1}&region={R:2}" /> 
    </rule> 
</rules> 

不當然,如果我希望該操作是重寫或重定向,但該模式不起作用。任何幫助是極大的讚賞

+0

這個規則在網站根目錄下的「web.config」或子目錄「web.config」中? – Kev

+0

@Kev在子目錄中:「/ partners」 – xst

+0

我還需要安裝[ApplicationRequestRouting](http://www.iis.net/downloads/microsoft/application-request-routing),如下所示:http:// stackoverflow .com/a/7895377/1163940 – xst

回答

1

根據您的回答我的問題的意見:

是這個規則在站點根web.config或子目錄的web.config?

@Kev子目錄中的: 「/合作伙伴」

從文檔:

http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference?amp;clcid=0x409

報價:

注意,輸入網址傳遞給分佈式規則的字符串始終爲 相對於定義的規則爲 的Web.config文件的位置。例如,如果請求的是 http://www.mysite.com/content/default.aspx?tabid=2&subtabid=3,並且在/ content目錄中定義了 重寫規則,則此規則將此URL字符串default.aspx作爲輸入獲取 。

在此基礎上,你需要你的URL匹配更改爲:

^(var|distributors|msp|techpartners)/(na|emea|apac)(|/)(.*) 

假設你重新寫入規則存在於:

http://example.com/partners/web.config 

只是有一個這是什麼其他的事情似乎是一個無關$字符在您的重定向/重寫網址前面的參考{R:1},我不知道你是否打算在那裏或沒有。