“+”字符在 IIS 中导致问题 URL 重写

"+" character causing issues in IIS URL rewrite

我有 URL 我想在 IIS 中设置重定向。

Current URL: portal/en_us/apps/app+doc

New URL: apps/newapps

不与

合作
<rule name="From portal/en_us/apps/app+doc" stopProcessing="true">
    <match url="^portal/en_us/apps/app+doc$" ignoreCase="true" />
    <action type="Redirect" url="https://domain1123.com/apps/newapps" />
</rule>

导致 404 错误

引用 reference guide,我们会看到 + 被定义为这样工作:

Matches previous element one or more times.

这意味着这个表达式:

^portal/en_us/apps/app+doc$

将匹配包含以下内容的整个字符串:

  • portal/en_us/apps/appdoc
  • portal/en_us/apps/apppdoc
  • portal/en_us/apps/appppdoc
  • portal/en_us/apps/apppppdoc

以此类推

要实际匹配文字 +,您需要使用 \:

对其进行转义
^portal/en_us/apps/app\+doc$

现在它被视为文字 + 而不是解释为“一个或多个 p 字符”。

我添加了allowDoubleEscaping

<system.webServer>
     <security>
          <requestFiltering allowDoubleEscaping="true" />
     </security>
</system.webServer>

您可以尝试先对“+”字符进行编码,然后再重定向。

您可以使用此 link 来编码:https://www.urlencoder.org