给定如下URL重写规则:
<rule name="RewriteUserFriendlyThings" stopProcessing="true">
<match url="^cat/sub-cat/(d+)/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="cat/sub-cat/detail.aspx?id={R:2}" />
</rule>
在c#代码中,我需要为我的书签按钮(不要问)读取模式的第二组(这是我的ID)中的值,以处理像这样动态的页面。我使用的CMS在发布时做的事情,我们错过了书签动态内容。
我所做的就是加载网页。配置为XML,并根据match
元素的url
属性中的内容匹配当前URL。然而,我不知道如何进入小组。请记住,这需要是通用的,所以在另一条规则中,组可以是第三组或第一组。
我有一个白名单,上面列出了我做这件事所违反的规则。
我尝试使用捕获组(?<id>d+)
,但网络。
我解决这个问题的方法是使用IIS 7 URL重写模块的服务器变量功能。
我定义了一个新的允许的服务器变量,然后使用IIS URL重写语法{R:2}
捕获我需要的值。然后我可以使用HttpContext.Request.ServerVariables
集合访问该值。
使用命名组的想法似乎是解决规则灵活性的合理的好方法。我目前无法在IIS上测试重写规则,但您可能想尝试使用另一种方法来命名捕获的组。也许会通过的。
试试这个替代模式,它使用单引号代替尖括号:
(?'id'd+)