url 中的“%2b”不适用于 url 重写

"%2b" in url does not work for url rewrite

我在 web.config

中配置了以下 url 重写
<system.webServer>
<rewrite>
  <rules>
    <rule name="Angular Routes" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="/" />
    </rule>
  </rules>
</rewrite>
</system.webServer>

我有这个 url => http://www.somesite.com/password-reset/dynamicParamValue;token=CfDJ8FDko%2FFet4BBsdmNJE1GyMyr%2FK%2Fzc8XGc788k428wh8A%2BHTxo%2BctYiPPLvhnR9KpGGxY%2By%2B9CTkLYOLk2g%2BIkYmCxVky%2FqI0cEfU5s5eKW6mNLj8J%2BJpPRXCqyMT0wNbdd%2Fczo%2FZPEuwzRpwM4ChWiQ%3D

注意: 在上面 url 我有可选的 angular 参数命名为 token.

当我在浏览器中点击上面的 url 时,它显示 404 not found。我不知道为什么它给我状态代码 404 以及为什么 url 重写规则不适用于这个特定的 link。其他路线工作正常。这是唯一行不通的路线。

如果我从 url 中删除 % 它确实有效。为什么它不能与路由参数值中的 %2b 一起使用? 请帮助我使这条路线正常工作。

HTTP Error 404.11 - Not Found

The request filtering module is configured to deny a request that contains a double escape sequence.

这可能是您遇到的错误。要解决此问题,您需要通过为请求过滤模块添加额外设置来启用双重转义。

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*"/>
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
          </conditions>
          <action type="Rewrite" url="/"/>
        </rule>
      </rules>
    </rewrite>
    <security>
      <requestFiltering allowDoubleEscaping="true"/>
    </security>
  </system.webServer>
</configuration>