ASP.net Web.Config重定向规则

时间:2019-03-11 19:24:58

标签: asp.net redirect iis web-config

此重定向存在问题。我试图将每个州的安装位置页面永久重定向到新页面。这是一个例子,效果很好。

<rule name="49 set wyoming/installation-locations 301 permanently moved" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
    <add input="{HTTP_HOST}{REQUEST_URI}" pattern="wyoming/installation-locations" />
  </conditions>
  <action type="Redirect" url="/locations/wy/" redirectType="Permanent" />
</rule>

现在,当我必须重定向主安装位置页面(如下)时,它可以工作,但是此新的重定向规则将覆盖上面的位置和其他状态的位置。

<rule name="locations redirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
    <add input="{HTTP_HOST}{REQUEST_URI}" pattern="installation-locations" />
  </conditions>
  <action type="Redirect" url="/locations/" redirectType="Permanent" />
</rule>

有人有什么建议吗?

3 个答案:

答案 0 :(得分:0)

尝试将模式设置为在installation-locations规则的locations redirect之前不接受任何其他内容。

<rule name="locations redirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
    <add input="{HTTP_HOST}{REQUEST_URI}" pattern="^(installation-locations)$" />
  </conditions>
  <action type="Redirect" url="/locations/" redirectType="Permanent" />
</rule>

更多信息:https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/testing-rewrite-rule-patterns

答案 1 :(得分:0)

根据您的描述,最简单的解决方法是修改url重写规则顺序。

由于安装位置也可以与“ wyoming / installation-locations”模式匹配,因此您会发现位置重定向规则没有用。

据我所知,URL重写规则匹配是一对一的。它将使用第一条规则,然后使用第二条,第三条规则。如果该规则与第一个匹配,则不会继续匹配第二个。

我建议您可以尝试使用以下url重写规则,它将很好地工作。

 <rule name="49 set wyoming/installation-locations 301 permanently moved" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
    <add input="{HTTP_HOST}{REQUEST_URI}" pattern="wyoming/installation-locations" />
  </conditions>
  <action type="Redirect" url="/locations/wy/" redirectType="Permanent" />
</rule>
  <rule name="locations redirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
    <add input="{HTTP_HOST}{REQUEST_URI}" pattern="installation-locations" />
  </conditions>
  <action type="Redirect" url="/locations/" redirectType="Permanent" />
</rule>

答案 2 :(得分:0)

我们通过在页面皮肤中放置服务器端脚本来解决此问题。

if (DotNetNuke.Entities.Tabs.TabController.CurrentPage.TabName == "Installation Locations")
Response.Redirect("/locations");