IIS重写(带和/或不带尾随斜杠)

htrmnn0y  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(102)

我的重定向Map遇到了问题,我想知道最好的方法是什么。
到目前为止,我有一个rewritemap:

<add key="/old-folder/old-pagename" value="/new-folder/new-pagename" />
<add key="/old-pagename" value="/new-pagename" />

在我的web.config中,我有这个:

<rewrite>
  <rewriteMaps configSource="rewritemaps.config"></rewriteMaps>
  <rules>
    <rule name="Redirect rule1 for Redirects" enabled="true">
      <match url="(.*[^/])" />
      <conditions>
        <add input="{Redirects:{PATH_INFO}}" pattern="(.+)" />
      </conditions>
      <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

问题是,查看Google Search Console,可以找到https://example.com/old-pagenamehttps://example.com/old-pagename/(带尾随斜杠)。
我现在唯一的解决方案是将我的rewritemaps.config加倍,并确保每次重写都包含一个尾随的斜杠。
当然,有一个更好的方法,而不是双重的重定向列表?我不能通过匹配规则忽略尾部的斜杠吗?
这种情况下的最佳做法是什么?

huus2vyu

huus2vyu1#

您可以尝试在web.config中使用以下规则:

<rewrite>
    <rewriteMaps>
        <rewriteMap name="Redirects">
            <add key="old-folder/old-pagename" value="/new-folder/new-pagename"/>
            <add key="old-pagename" value="/new-pagename"/>
        </rewriteMap>
    </rewriteMaps>
    <rules>
        <rule name="Redirect rule1 for Redirects">
            <match url="^(.+?)/?$" />
            <conditions>
                <add input="{Redirects:{R:1}}" pattern="(.+)" />
            </conditions>
            <action type="Redirect" url="{C:1}" appendQueryString="true"/>
        </rule>
    </rules>
</rewrite>

这个规则对我很有效,希望它也能帮助到你。如果仍然不起作用,请告诉我,我将进一步帮助您。

相关问题