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

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

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

  1. <rule name="Redirect Category No Parent" stopProcessing="true">
  2. <match url="^content/category/([a-zA-Z\d-_\s]+)(/[a-zA-Z\d-_\s]+)*" />
  3. <action type="Rewrite" url="page?isCategory=true&amp;categories={R:1}&amp;other={R:2}&amp;all={R:0}" appendQueryString="true" />
  4. </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),如果要捕获多个段,可以修改正则表达式模式如下:

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

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

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

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

  1. <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

展开查看全部

相关问题