IIS7의 하위 디렉터리에서 URL 다시 쓰기 규칙이 상속되지 않도록 방지


11

CMS에서 깨끗한 URL에 대한 URL 다시 쓰기 설정이 있고 web.config는 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Clean URLs" stopProcessing="true">
                    <match url="^([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="?id={R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

기본적으로 깨끗한 URL index.php?id=something로 바뀝니다 something. 매우 간단하고 잘 작동합니다.

CMS에서와 마찬가지로 백엔드가 중단되지 않도록하려면 각 하위 디렉토리 <remove name="Clean URLs" />또는 <clear />web.config에 규칙이 상속되지 않아야합니다.

부모 규칙에 규칙의 범위를 현재 디렉토리로만 제한하여 자식에 의해 상속되지 않도록 지정하는 방법이 있습니까? <rule name="Clean URLs" stopProcessing="true" inherit="no">서사시 와 같은 것이 있습니다.

답변:



6

최근 비슷한 상황 에서이 문제가 발생했습니다. 그러나 rjenkins의 답변은 상위 설정의 상속에 의존하는 가상 응용 프로그램에 문제를 일으키는 것으로 보입니다.

다시 쓰기 규칙의 이름을 알고 있으면 다음과 같이하면됩니다.

<rewrite>
  <rules>
    <remove name="RewriteNameToDisable" />
  </rules>
</rewrite>

2
그것은 첫 번째 시도 였지만 모든 하위 디렉토리에 대해 web.config에 넣어야하며 항상 실용적이지는 않습니다. 나는 그것이 더 깨끗하다는 데 동의하지만, 특히 하위 디렉토리 (예 : 하위 폴더에있는 cms의 다른 인스턴스)에 재 작성이있을 때 더 효과적입니다.
Rich Jenks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.