URL 재작성을 사용하여 URL 일부 변경

URL 재작성을 사용하여 URL 일부 변경

개발자 컴퓨터에서 기존 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>

정규 표현식이 이 문제에 대한 바람직한 해결책이 될까요?

답변1

다른 포럼에서 이 질문에 대한 답변을 얻었습니다. 이것은 기록을 위해 해당 답변을 요약한 것입니다.

올바른 재작성은 다음과 같습니다.

<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>

관련 정보