“+”字符在 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。
我有 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。