Правила перенаправления ASP.net Web.Config - PullRequest
0 голосов
/ 11 марта 2019

У меня проблема с этим перенаправлением. Я пытаюсь перенаправить страницу местоположения установки каждого штата на новую. Это один из примеров, и он отлично работает.

<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 голосов
/ 12 марта 2019

Согласно вашему описанию, самый простой способ решить эту проблему - изменить порядок правил перезаписи URL.

Поскольку места установки также могут соответствовать шаблону "wyoming / Installation-местоположения", вы обнаружите, что правило перенаправления местоположений бесполезно.

Насколько я знаю, соответствие правила перезаписи 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>
0 голосов
/ 15 марта 2019

Мы решили это, поместив серверный скрипт в обложку страницы.

if (DotNetNuke.Entities.Tabs.TabController.CurrentPage.TabName == "Installation Locations")
Response.Redirect("/locations");
0 голосов
/ 11 марта 2019

Попробуйте настроить шаблон так, чтобы он больше ничего не принимал до 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

...