使用 Url Rewriter 将 URL 的最后部分放入变量中
我正在使用 Url Rewriter 在我的 Web 应用程序中创建用户友好的 URL,并设置以下规则
<rewrite url="/(?!Default.aspx).+" to="/letterchain.aspx?ppc=$1"/>
如何替换 $1 使其成为 URL 的最后部分?
使得下面的
www.mywebapp.com/hello
将转换为
/letterchain.aspx?ppc=hello
我已阅读文档但找不到任何内容。
I'm using Url Rewriter to create user-friendly URLs in my web app and have the following rule set up
<rewrite url="/(?!Default.aspx).+" to="/letterchain.aspx?ppc=$1"/>
How do I replace $1 so that it is the last part of the URL?
So that the following
www.mywebapp.com/hello
would transform to
/letterchain.aspx?ppc=hello
I've read the docs but can't find anything.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
该组的
to
部分中的$1 指的是定义的第一个捕获组(例如括号中的部分)。您实际想要注入 $1 的部分是 .+,它不在捕获组中。
我不确定,但我认为由于 (?!)“如果后缀不存在则匹配”查询,这不会被计为编号捕获组 $1,所以这应该工作:
如果没有,那么只需尝试插入将第二个捕获组放入您的字符串中:
The $1 in the
to
portion of the group refers to the first capture group defined (eg the part in the brackets).The part that you actually want injecting into the $1 is the .+ which isnt in a capture group.
I'm not sure but I think because of the (?! ) "match if suffix is absent" query this isnt counted as numbered capture group $1 so this should work:
If it doesnt then just try inserting the second capture group into your to string instead:
请注意,如果您正在针对 IIS 7+ 进行开发 http://www.iis.net/download/urlrewrite / 是 Microsoft 的一个模块,可以以更少的占用空间执行更快的重写。
顺便说一句,你的正则表达式有一个小问题,你需要转义点字符,即“/(?!Default.aspx)(.+)”
Please note that if you are developing for IIS 7+ http://www.iis.net/download/urlrewrite/ is a module from Microsoft that performs faster rewrites with lower footprint.
BTW, your regex has a small problem, you need to escape the dot character, that is "/(?!Default.aspx)(.+)"