IIS基于长度PARAM重写规则
问题描述:
我有以下重写规则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/
答
如果你想只匹配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 "+")