У меня есть сайт 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 /).