使用 Url Rewriter 将 URL 的最后部分放入变量中

发布于 2024-10-05 18:06:57 字数 365 浏览 3 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦晓ヶ微光ヅ倾城 2024-10-12 18:06:57

该组的to 部分中的$1 指的是定义的第一个捕获组(例如括号中的部分)。

您实际想要注入 $1 的部分是 .+,它不在捕获组中。

我不确定,但我认为由于 (?!)“如果后缀不存在则匹配”查询,这不会被计为编号捕获组 $1,所以这应该工作:

<rewrite url="/(?!Default.aspx)(.+)" to="/letterchain.aspx?ppc=$1"/>

如果没有,那么只需尝试插入将第二个捕获组放入您的字符串中:

<rewrite url="/(?!Default.aspx)(.+)" to="/letterchain.aspx?ppc=$2"/>

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:

<rewrite url="/(?!Default.aspx)(.+)" to="/letterchain.aspx?ppc=$1"/>

If it doesnt then just try inserting the second capture group into your to string instead:

<rewrite url="/(?!Default.aspx)(.+)" to="/letterchain.aspx?ppc=$2"/>
随遇而安 2024-10-12 18:06:57

请注意,如果您正在针对 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)(.+)"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文