2011-09-06 43 views
0

排除使用IIS URL重寫模塊我試圖重寫從進來的URL /en/page.aspx/en/page/index.aspx如何匹配的模式,但是從結果

使用正則表達式我檢查的字符串的.aspx

^.*(.aspx)$ 

目前在捕獲組我得到

/en/page.aspx 
結束

我如何才能捕獲/zh /頁面部分?

再往下行了,我會重寫URL,如下所示:

{R:0}/index.aspx 

回答

2

要匹配而不捕獲您可以使用?:模式,像(?:\.aspx)。然而,以滿足您的重定向需要你可能需要使用下面的表達式:

^(.*)(\.aspx)$ 

這樣{R:1}將指向正是你需要的。另外請注意,您需要轉義點,以便表達式將匹配點字符而不是其他所有點。

1

更改你如何捕捉匹配...

^(.*?)(\.aspx)$ 

當通過比賽收集走,比賽應該是以下幾點:

指數0應該是整個網址

index 1應該是/ en/page

index 2應該是.aspx

+0

^(。*?)(\。aspx)$和^(。*)(\。aspx)$?之間的區別是什麼?特別是(。*?)做什麼? – Fixer

+0

問號意味着,如果下一個字符與表達式的下一部分相匹配,那麼這個星號是懶惰的,並且不匹配。 – gislikonrad

+0

'。*?'表示非貪婪,在這種情況下不起作用,因爲它後跟一個普通字符串,後面跟着'$'(表示字符串結尾)。 – shesek