IIS URL 使用条件在一条规则中重写 2 个不同的 URL,可能吗?

问题描述 投票:0回答:1

我有两种不同的重写规则。

<rule name="Venue" stopProcessing="true">
    <match url="Venue/([_0-9a-z-(-)-,-]+)/([_0-9a-z-(-)-,-]+)" />
    <action type="Rewrite" url="Main.asp?Type=Venue&amp;VenueID={R:1}&amp;VName={R:2}" appendQueryString="true" />
 </rule>
 <rule name="Venue" stopProcessing="true">
    <match url="Venue/([_0-9a-z-(-)-,-]+)/([_0-9a-z-(-)-,-]+)/([_0-9a-z-(-)-,-]+)" />
    <action type="Rewrite" url="Main.asp?Type=Venue&amp;VenueID={R:1}&amp;VName={R:2}&amp;ConcertID={R:3}" appendQueryString="true" />
  </rule>

有没有办法使用

<conditions>
将两个规则合并为一个规则?
因此,当您访问任一 URL 时。

/Venue/37/The_Omni(您转到其页面。)

/Venue/37/The_Omni/ConcertID/1(您转到其页面。)

(或)我是否必须接受两条不同名称的规则?

asp.net iis url-rewriting web-config
1个回答
0
投票

字面上的正则表达式规则允许您编写,

<rule name="Venue" stopProcessing="true">
    <match url="Venue/([_0-9a-z-(-)-,-]+)/([_0-9a-z-(-)-,-]+)(?:/([_0-9a-z-(-)-,-]+))?" />
    <action type="Rewrite" url="Main.asp?Type=Venue&amp;VenueID={R:1}&amp;VName={R:2}{R:3:+&amp;ConcertID={R:3}}" appendQueryString="true" />
</rule>

您可以尝试看看 IIS URL Rewrite 模块是否支持此类表达式。

© www.soinside.com 2019 - 2024. All rights reserved.