【问题标题】:URL rewriting with space & "+" symbol in web.config在 web.config 中使用空格和“+”符号重写 URL
【发布时间】:2017-07-28 13:08:06
【问题描述】:

我想重定向我的旧网址 "http://staging.TempSite.com/about-us/Institute-+target/%20"

新网址 ""http://staging.TempSite.com/about-us/news-events""

<rule name="rule59" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
  <add input="{HTTP_HOST}{REQUEST_URI}" pattern="staging.TempSite.com/about-us/Institute-\+target/\s*" />
</conditions>
<action type="Redirect" url="./about-us/news-events" />

我也尝试了以下模式。

pattern="staging.TempSite.com/about-us/Institute-\+target/\s*$" 
pattern="staging.TempSite.com/about-us/Institute-\+target/ $"

【问题讨论】:

  • 尝试将 &lt;match url="(.*)" /&gt; 替换为 &lt;match url="^about-us/Institute-\+target/\s*$" /&gt; 然后 &lt;action type="Redirect" url="/about-us/news-events" redirectType="Permanent" /&gt;

标签: asp.net regex url-rewriting web-config


【解决方案1】:

@Wiktor Stribiżew 评论几乎是正确的,但它不起作用。如果您的 URL 中有 +,则需要在配置中启用 allowDoubleEscaping。配置示例:

 <system.webServer>
    <security>
        <requestFiltering allowDoubleEscaping="true"/>
    </security>
    <rewrite>
       <rules>
            <rule name="rule59" stopProcessing="true">
                <match url="^about-us/Institute\-\+target/\s*$" />
                <action type="Redirect" url="/about-us/news-events" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

【讨论】:

猜你喜欢
  • 2014-06-13
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 2013-07-26
  • 2015-06-27
相关资源
最近更新 更多