programing

웹으로 URL 재작성을 하려면 어떻게 해야 합니까?Release.config 변환?

stoneblock 2023. 10. 6. 20:50

웹으로 URL 재작성을 하려면 어떻게 해야 합니까?Release.config 변환?

모든 트래픽을 https로 이동하도록 지정된 web.config rewrite 규칙이 있습니다.규칙은 작동하지만 디버깅하는 동안 SSL이 필요하지는 않습니다.이미 web.release.config 변환이 수행 중이어서 퍼블리시에서 작동하므로 재작성 규칙을 적용하기로 결정했습니다.문제는 다시 쓰기 규칙이 다른 설정들처럼 변형되지 않고 있다는 것입니다.다음은 web.config 설정입니다.

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>

    <rewrite></rewrite>
</system.webServer>

다음은 혁신이 진행되는 과정입니다.

  <system.webServer>
<rewrite>
  <rules>
    <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
      <match url="(.*)"/>
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$"/>
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
    </rule>
  </rules>
</rewrite></system.webServer>

web.config에 다시 쓰기 규칙만 복사하면 잘 됩니다.왜 웹인지 아는 사람 있습니까?Release.config 변환은 이 섹션에만 적용되지 않습니까?

변환은 적절한 기능을 제공해야 가능합니다.xdt변환이 필요한 요소의 속성입니다.추가해 봅니다.xdt:Transform릴리스 구성 속성:

<system.webServer xdt:Transform="Replace">
    <!-- the rest of your element goes here -->
</system.webServer>

그것은 변환 엔진이 전체적으로system.webServer로부터의 요소.Web.config에서 온 것으로 교체해야 합니다.Web.Release.config.

변환 엔진은 다음과 같이 구성되지 않은 요소를 무시합니다.xdt특성.

MSDN에 대한 의무 링크.

또 다른 방법은 로컬 호스트에 있는 경우 다시 쓰기 조건을 설정하는 것입니다.

<conditions>
    <add input="{HTTP_HOST}" pattern="localhost" negate="true"/>
</conditions>
<system.webServer>
    <rewrite>
        <rules xdt:Transform="Replace">
            <clear />
            <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
              <match url="(.*)" />
              <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTP_HOST}" pattern="localhost(:\d+)?" negate="true" />
                <add input="{HTTP_HOST}" pattern="127\.0\.0\.1(:\d+)?" negate="true" />
                <add input="{HTTPS}" pattern="OFF" />
              </conditions>
              <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
            </rule>
        </rules>          
    </rewrite>
</system.webServer>

다른 답변들을 종합해보면, "Replace"는 노드만 교체하고 "Insert"는 교체하지는 않는다는 것을 알 수 있었습니다(Digital D가 올바른 경로를 제시해 주셔서 감사합니다).나머지 변환 파일은 대체 파일을 사용하기 때문에 기본 web.config(변환되는 파일)에서 빈 태그를 선택했습니다.

<system.webServer>
...other tags here that do not get transformed...
<rewrite />
</system.webServer>

이상적으로 삽입 또는 교체(또는 제거 및 삽입)되는 "Overwrite"가 있을 수 있습니다.

언급URL : https://stackoverflow.com/questions/7004053/how-do-i-make-url-rewrite-work-with-web-release-config-transform