IIS 사용자 정의 오류 페이지를 사용할 때 빈 페이지

IIS 사용자 정의 오류 페이지를 사용할 때 빈 페이지

Windows Server 2012의 IIS8에서 PHP 기반 응용 프로그램을 실행하고 있습니다. 실패한 인증 시도에 대해 401 오류 페이지를 대체하여 사용자 지정 오류 페이지를 사용하려고 합니다.

내 web.config는 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpRedirect enabled="false" destination="https://my.website.co.uk" />
        <rewrite>
            <rules>
                <rule name="Hide Yii Index" stopProcessing="true">
                    <match url="." />
                    <action type="Rewrite" url="index.php" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                </rule>
            </rules>
        </rewrite>
<httpErrors errorMode="Custom" existingResponse="Replace">
       <remove statusCode="401" subStatusCode="-1" />
       <error statusCode="401" path="/errors/401.htm" responseMode="ExecuteURL" />
</httpErrors>
    </system.webServer>
</configuration>

자격 증명을 제공하지 않고 웹 사이트를 보려고 하면 빈 페이지만 보입니다. 페이지 소스도 완전히 비어 있습니다. 단일 HTML 태그가 없습니다.

이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

답변1

여기서 무엇을 하고 있는지 생각해 보세요. 사용자가 올바르게 인증되지 않은 경우 이 다른 페이지를 사용자에게 표시한다는 의미입니다. 하지만 이 (401) 페이지는 인증된 사용자에게만 표시될 수 있습니다. 따라서 IIS는 해당 페이지를 사용자에게 표시하는 것이 허용되지 않고 대신 빈 페이지를 표시합니다.

이 문제를 해결하는 방법에는 최소한 두 가지가 있습니다. httpErrors를 다음과 같이 변경하세요.

<httpErrors errorMode="Custom" existingResponse="Replace">
   <remove statusCode="401" subStatusCode="-1" />
   <error statusCode="401" path="errors\401.htm" responseMode="File" />
</httpErrors>

responseMode를 로 변경하면 Fileiis는 더 이상 URL을 실행하지 않고 대신 파일 콘텐츠를 로드하여 사용자에게 보냅니다. 이는 인증 상태에 관계없이 항상 작동합니다. 경로는 웹 사이트의 루트를 기준으로 합니다.

다른 옵션은 오류 폴더에 web.config를 추가하고 이 디렉터리에 대한 익명 인증을 허용하는 것입니다. 결국 오류 페이지만 있습니다.

관련 정보