gpt4 book ai didi

IIS URL 重写否定条件不起作用

转载 作者:行者123 更新时间:2023-12-02 15:37:14 24 4
gpt4 key购买 nike

我想根据以下规则将一些页面从旧网站 (oldsite.com) 重定向到新网站 (newsite.*):

  • 所有第一级子级(/sv、/no、/da 等)都应重定向到各自的对应项,即 newsite.se、newsite.no、newsite.dk 等。
  • 所有其他子级/后代也应重定向到新网站的根目录,除了/page1 和/page2 及其后代。

为此,我创建了以下规则(在本例中为 sv):

<rule name="Redirect /sv to .se" stopProcessing="true">
<match url="^sv/?$" />
<action type="Redirect" url="http://newsite.se" />
</rule>
<rule name="Redirect /sv/* except some pages" stopProcessing="true">
<match url="^sv/.+" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_URI}" pattern="^sv/page1(.*)" negate="true" />
<add input="{REQUEST_URI}" pattern="^sv/page2(.*)" negate="true" />
</conditions>
<action type="Redirect" url="http://newsite.se" />
</rule>

第一条规则可以正常工作,但第二条规则就不行了。问题是我的否定条件似乎不起作用。当我输入 oldsite.com/sv/page1 时,我仍然会被重定向到 newsite.se。也许我误解了否定条件的工作原理,但当且仅当两个条件都为真(评估为假)时,第二条规则不应该执行该操作,即 REQUEST_URI 匹配/page1和/page2?

最佳答案

你非常了解这个概念。

唯一的问题是 {REQUEST_URI} 始终以 / 开头,并且 url 永远不会与 ^sv/page1(. *),最后你得到了一个全新的误报。

因此,您需要在模式中包含前导斜杠。

<add input="{REQUEST_URI}" pattern="^/sv/page1(.*)" negate="true" />
<add input="{REQUEST_URI}" pattern="^/sv/page2(.*)" negate="true" />

关于IIS URL 重写否定条件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36351345/

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