Я пытаюсь использовать перезапись URL-адреса на IIS 8.0, чтобы переписать существующие URL-адреса на машине разработчика. Причина в том, что я не хочу изменять существующий (старый) код.
Я пытаюсь изменить следующий код в потоке ответа:
<a href="http://www.foo.com/path/page.asp?a=1">Foo Page</a>
в:
<a href="http://www.foo.localhost/path/page.asp?a=1">Foo Page</a>
Но когда я пытаюсь, у меня получается:
<a href="foo.localhost">Foo Page</a>
И, как вы все знаете, это не очень удовлетворительный результат.
Итак - как мне сделать эту перезапись, чтобы добиться того, что я пытаюсь сделать?
Я знаю, что есть более эффективные способы сделать это, используя переменные приложения и т. Д., Но это старое решение, и я не хочу слишком сильно возиться с самим приложением. Я хочу свести изменения к минимуму. По крайней мере, для начала.
Правила, которые я пробовал, выглядят так:
<system.webServer>
<rewrite>
<outboundRules>
<rule name="foo.com" enabled="true">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="foo.com" />
<action type="Rewrite" value="foo.localhost" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
Будет ли регулярное выражение предпочтительным решением этой проблемы?
Я получил ответ на этот вопрос на другом форуме. Это краткое изложение того ответа, для протокола.
Правильная перезапись выглядит так:
<system.webServer>
<rewrite>
<outboundRules>
<rule name="foo.com" enabled="true">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^(.*)foo.com(.*)$" />
<action type="Rewrite" value="{R:1}foo.localhost{R:2}" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>