2016-02-12 107 views
0

我有以下重寫規則IIS基於長度PARAM重寫規則

<rule name="Product short redirect" stopProcessing="true"> 
     <match url="product/([A-Za-z0-9]+)/$" ignoreCase="true" /> 
     <action type="Redirect" redirectType="Permanent" url="product-redirect/?code={R:1}" /> 
    </rule> 

但是我希望它只是匹配長度超過3個字符

<rule name="Product short redirect" stopProcessing="true"> 
     <match url="product/([A-Za-z0-9].{4}+)/$" ignoreCase="true" /> 
     <action type="Redirect" redirectType="Permanent" url="product-redirect/?code={R:1}" /> 
    </rule> 

產品代碼,但是,這只是返回部分匹配以及三個字符代碼仍然匹配?

樣品不完整的URL將是:

product/u22tfp1/ 

product/xxx/ 

回答

0

如果你想只匹配4個字符或更多的產品,你需要指定正則表達式的長度:

EG:想匹配的(products/1234/ OR products/12345/

<match url="product\/([A-Za-z0-9]{4,100}+)\/$" /> 

我使用4和100之間的匹配在這個例子中(你也可以明確地避免與3個字符匹配,但它看起來醜陋在我看來)

注: 與以前的正則表達式的問題product/([A-Za-z0-9].{4}+)/$是匹配所有內容的點號字符.,基本上你說匹配:

"product/" then 
"a single character/digit [a-Z0-9]" then 
"anything with a length of 4"(repeat this last statement "+")