不确定子目录的IIS重定向规则

col17t5w  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(160)

我需要写一个规则来实现这些:

<rule name="Redirect Category No Parent" stopProcessing="true">
   <match url="^content/category/([a-zA-Z\d-_\s]+)(/[a-zA-Z\d-_\s]+)*" />
   <action type="Rewrite" url="page?isCategory=true&amp;categories={R:1}&amp;other={R:2}&amp;all={R:0}" appendQueryString="true" />
</rule>

但它并没有给予我所有的路径它只是给我这个**
isCategory=true&categories=xxx&other=/zzz&all=content/category/xxx/yyy/zzz

**此输入

https://localhost:44354/content/category/xxx/yy/zzz
任何人都知道为什么别人是/zzz我希望它是/xxx/yyy/zzz

guz6ccqo

guz6ccqo1#

规则中的问题在于元素中的正则表达式。示例URL中有多个段(xxx,yyy,zzz),如果要捕获多个段,可以修改正则表达式模式如下:

<match url="^content/category(/([a-zA-Z\d-_\s]+)((/[a-zA-Z\d-_\s]+)*))" />

对于此输入:
https://localhost:44354/content/category/xxx/yy/zzz
您将获得以下捕获组:

{R:0}   content/category/xxx/yyy/zzz
{R:1}   /xxx/yyy/zzz
{R:2}   xxx
{R:3}   /yyy/zzz
{R:4}   /zzz

如果你想得到categories=xxxother=/xxx/yyy/zzz,你可以这样修改重写URL:

<action type="Rewrite" url="page?isCategory=true&amp;categories={R:2}&amp;other={R:1}&amp;all={R:0}" appendQueryString="true" />

它会给予你所有你想要的路径:
isCategory=true&categories=xxx&other=/xxx/yyy/zzz&all=content/category/xxx/yyy/zzz

相关问题