【问题标题】:Rewrite Rule in IIS (web.config) - Negate All Subfolders在 IIS (web.config) 中重写规则 - 否定所有子文件夹
【发布时间】:2014-12-11 08:48:52
【问题描述】:

我需要将我网站上的某个页面从基于扩展的页面 (.asp) 重写为基于非扩展的页面。但是,当我这样做时,规则也会影响所有子文件夹。页面如下:

www.mysite.com/my-page

需要重新写入:

www.mysite.com/my-page.asp

但是我需要从重写中否定以下内容:

www.mysite.com/my-page/sub-folder-1

www.mysite.com/my-page/sub-folder-1/sub-folder-2

等等

我目前的代码如下:

<rule name="re-write-rule-test" stopProcessing="true">
  <match url="^my-page" />
  <action type="Rewrite" url="/my-page.asp" />
  <conditions>
    <add input="{REQUEST_URI}" pattern="^/([^/]+)?$" negate="true" />
  </conditions>
</rule>  

但它不起作用。实际页面上的重写工作正常,但否定失败并且所有子文件夹页面也正在重写。

你能帮忙吗?

谢谢,

杰森

【问题讨论】:

  • 我认为将 &lt;match url="^my-page" /&gt; 更改为 &lt;match url="^my-page$" /&gt; 就足够了(在匹配中添加终止符以避免匹配以“我的页面”开头的所有内容。
  • 你的否定似乎只适用于以/ 开头并且直到最后没有其他/ 的东西..;我不明白你在那里尝试了什么。您可以使用regex101.com 对正则表达式匹配进行试验
  • 感谢天思白。您的第一条评论就是答案。

标签: regex iis web-config


【解决方案1】:

Tensibai 的回答如下。谢谢!

我认为更改 by 就足够了(在匹配中添加终止以避免匹配以“我的页面”开头的所有内容。- Tensibai 58 分钟前

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2020-02-17
    • 2018-09-18
    • 2013-08-19
    相关资源
    最近更新 更多