IIS 基于长度参数的重写规则
IIS Rewrite rule based on length 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>
但这只是returns部分匹配而且三个字符代码仍然匹配??
示例部分网址为:
product/u22tfp1/
和
product/xxx/
如果只想匹配4个字符以上的产品,需要在正则表达式上指定长度:
E.G:想要匹配 (products/1234/
OR products/12345/
)
<match url="product\/([A-Za-z0-9]{4,100}+)\/$" />
我在这个例子中使用了 4 到 100 之间的匹配(你也可以明确地避免匹配 3 个字符,但我认为它看起来更难看)
注意:
前面的正则表达式 product/([A-Za-z0-9].{4}+)/$
的问题是匹配所有内容的点字符 .
,基本上你说的是 match:
"product/" then
"a single character/digit [a-Z0-9]" then
"anything with a length of 4"(repeat this last statement "+" )
我有以下重写规则
<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>
但这只是returns部分匹配而且三个字符代码仍然匹配??
示例部分网址为:
product/u22tfp1/
和
product/xxx/
如果只想匹配4个字符以上的产品,需要在正则表达式上指定长度:
E.G:想要匹配 (products/1234/
OR products/12345/
)
<match url="product\/([A-Za-z0-9]{4,100}+)\/$" />
我在这个例子中使用了 4 到 100 之间的匹配(你也可以明确地避免匹配 3 个字符,但我认为它看起来更难看)
注意:
前面的正则表达式 product/([A-Za-z0-9].{4}+)/$
的问题是匹配所有内容的点字符 .
,基本上你说的是 match:
"product/" then
"a single character/digit [a-Z0-9]" then
"anything with a length of 4"(repeat this last statement "+" )