给定如下 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,它在发布时执行某些操作,但我们错过了为动态内容添加书签。
所以我所做的是将 web.config 加载为 XML 并根据 url
中的内容匹配当前 URL。 match
的属性元素。但是,我不知道如何进入该组。请记住,这需要是通用的,因此在另一条规则中,该组可以是第三组或第一组。
我有一个白名单规则,我这样做是违反的。
我尝试使用捕获组 (?<id>\d+)
但 web.config 不允许它们。
最佳答案
我解决这个问题的方法是使用 IIS 7 URL 重写模块的服务器变量功能。
我定义了一个新的允许的服务器变量,然后使用 IIS URL 重写语法 {R:2}
捕获我需要的值。然后我可以使用 HttpContext.Request.ServerVariables
集合访问该值。
关于c# - 从 Regex 读取捕获组也是 URL 重写规则?可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8449597/