带有可选参数的 IIS UrlRewrite
IIS UrlRewrite with optional parameters
我想重写一个 url 比如:
/categories/optional-sub-cat/product
或
/categories/optional-sub-cat/optional-2nd-sub-cat/product
我应该如何编写包含可选参数的正则表达式?
<rule name="Products" enabled="true" stopProcessing="true">
<match url="/(.+)/optional-sub-cat/optional-2nd-sub-cat/product" />
<action type="Rewrite" url="products.aspx?cat={R:1}&sub=..." />
</rule>
我还没有测试过这个,但是像这样的东西应该可以工作([^/] 基本上说匹配除 / 之外的所有内容,这样第一个 .+ 就不会吃掉所有匹配项并在 R1 中生成它):
<rule name="Products" enabled="true" stopProcessing="true">
<match url="/([^/]+)/([^/]*/)?([^/]*/)?product" />
<action type="Rewrite" url="products.aspx?cat={R:1}&sub1={R:2}&sub2={R:2}" />
</rule>
我想重写一个 url 比如:
/categories/optional-sub-cat/product
或
/categories/optional-sub-cat/optional-2nd-sub-cat/product
我应该如何编写包含可选参数的正则表达式?
<rule name="Products" enabled="true" stopProcessing="true">
<match url="/(.+)/optional-sub-cat/optional-2nd-sub-cat/product" />
<action type="Rewrite" url="products.aspx?cat={R:1}&sub=..." />
</rule>
我还没有测试过这个,但是像这样的东西应该可以工作([^/] 基本上说匹配除 / 之外的所有内容,这样第一个 .+ 就不会吃掉所有匹配项并在 R1 中生成它):
<rule name="Products" enabled="true" stopProcessing="true">
<match url="/([^/]+)/([^/]*/)?([^/]*/)?product" />
<action type="Rewrite" url="products.aspx?cat={R:1}&sub1={R:2}&sub2={R:2}" />
</rule>