gpt4 book ai didi

iis - 使用 URL Rewrite 更改 URL 的一部分

转载 作者:行者123 更新时间:2023-12-04 00:43:10 24 4
gpt4 key购买 nike

我正在尝试在 IIS 8.0 上使用 URL 重写来重写开发人员机器上的现有 URL:s。这样做的原因是我不想更改现有(旧)代码。

我想要实现的是更改响应流中的以下代码:

<a href="http://www.foo.com/path/page.asp?a=1">Foo Page</a>

进入:
<a href="http://www.foo.localhost/path/page.asp?a=1">Foo Page</a>

但是当我尝试时,我最终得到:
<a href="foo.localhost">Foo Page</a>

众所周知,这不是一个非常令人满意的结果。

那么 - 我该如何正确重写以实现我想要做的事情?

我知道有更好的方法来做到这一点,使用应用程序变量等,但这是一个旧的解决方案,我不想过多地弄乱应用程序本身。我想将更改保持在最低限度。至少开始。

我尝试的规则如下所示:
<system.webServer>
<rewrite>
<outboundRules>
<rule name="foo.com" enabled="true">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="foo.com" />
<action type="Rewrite" value="foo.localhost" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>

我想我应该使用一些正则表达式魔法。

最佳答案

您的规则需要更改为:

<rule name="foo.com" enabled="true">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^(.*)foo.com(.*)$" />
<action type="Rewrite" value="{R:1}foo.localhost{R:2}" />
</rule>

在图案中, ^(.*)将从 foo.com 之前的开头开始匹配任何内容(0 个或多个字符)和 (.*)$之后的任何事情 foo.com直到最后。

然后,您可以使用 action 中的反向引用。 ,其中 {R:1}将取值匹配 (.*)之前 foo.com{R:2}匹配值 (.*)之后 foo.com

关于iis - 使用 URL Rewrite 更改 URL 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com