我有两种不同的重写规则。
<rule name="Venue" stopProcessing="true">
<match url="Venue/([_0-9a-z-(-)-,-]+)/([_0-9a-z-(-)-,-]+)" />
<action type="Rewrite" url="Main.asp?Type=Venue&VenueID={R:1}&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&VenueID={R:1}&VName={R:2}&ConcertID={R:3}" appendQueryString="true" />
</rule>
有没有办法使用
<conditions>
将两个规则合并为一个规则?/Venue/37/The_Omni(您转到其页面。)
/Venue/37/The_Omni/ConcertID/1(您转到其页面。)
(或)我是否必须接受两条不同名称的规则?
字面上的正则表达式规则允许您编写,
<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&VenueID={R:1}&VName={R:2}{R:3:+&ConcertID={R:3}}" appendQueryString="true" />
</rule>
您可以尝试看看 IIS URL Rewrite 模块是否支持此类表达式。