Назад | Перейти на главную страницу

IIS7: rewriteMap эквивалент правила точного соответствия

У меня есть сайт mydomain.com/mysite и я хочу настроить набор перенаправлений в IIS7.

Для перенаправления с mydomain.com/mysite/old.aspx к mydomain.com/mysite/new.aspx Я могу написать:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="test" patternSyntax="ExactMatch" stopProcessing="true">
        <match url="old.aspx" />
        <action type="Redirect" url="new.aspx" />
      </rule>
    </rules>

Но чтобы получить то же самое с картой перезаписи, я также должен указать /mysite/ часть:

<rewriteMaps>
  <rewriteMap name="TestRewriteMap">
    <add key="/mysite/old.aspx" value="/mysite/new.aspx" />
  </rewriteMap>
</rewriteMaps>
<rules>
  <rule name="Redirect rule1 for TestRewriteMap">
    <match url=".*" />
    <conditions>
      <add input="{TestRewriteMap:{REQUEST_URI}}" pattern="(.+)" />
    </conditions>
    <action type="Redirect" url="{C:1}" appendQueryString="false" />
  </rule>
</rules>

Есть ли способ избежать указания имени сайта в URL-адресах карты перезаписи?

Я предполагаю, что вы поместили web.config с этим правилом перезаписи в папку / mysite?

Вы сможете заменить {TestRewriteMap:{REQUEST_URI}} с участием {TestRewriteMap:{REQUEST_FILENAME}}. Тогда вы можете удалить /mysite/ как из ключа, так и из значения в <rewriteMap></rewriteMap>. Помните, что это также будет соответствовать любому old.aspx глубже в структуре каталогов (в / mysite /).