我在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一起使用? 请帮助我使此路线正常工作。
答案 0 :(得分:1)
请求过滤模块配置为拒绝以下请求 包含双重转义序列。
这可能是您遇到的错误。要解决此问题,您需要通过为请求过滤模块添加额外的设置来启用双重转义。
<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>