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

时间:2018-10-08 17:01:21

标签: angular iis url-rewriting url-rewrite-module

我在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>

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

注意:在上面的网址中,我有一个可选的名为token的角度参数。

当我在浏览器中点击上面的URL时,它提示我404未找到。我不知道为什么它会给我状态代码404,以及为什么URL重写规则不适用于此特定链接。其他路线都很好。这是唯一一条无效的路由。

如果我从网址中删除%,它确实起作用。为什么在route参数值中不能与%2b一起使用? 请帮助我使此路线正常工作。

1 个答案:

答案 0 :(得分:1)

  

HTTP Error 404.11 - Not Found

     

请求过滤模块配置为拒绝以下请求   包含双重转义序列。

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

<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>