Página en blanco al utilizar páginas de error personalizadas de IIS

Página en blanco al utilizar páginas de error personalizadas de IIS

Estoy ejecutando una aplicación basada en PHP en IIS8, en Windows Server 2012. Estoy intentando usar una página de error personalizada para intentos fallidos de autenticación, reemplazando la página de error 401.

Aquí está mi 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>

Cuando intento visitar el sitio web sin proporcionar credenciales, todo lo que veo es una página en blanco. La fuente de la página también está totalmente en blanco: no hay una sola etiqueta html.

¿Alguna idea de cómo hago que esto funcione?

Respuesta1

Piensa en lo que estás haciendo aquí. Estás diciendo que si el usuario no se ha autenticado correctamente, muéstrale esta otra página. Pero esta página (401) sólo se puede mostrar a usuarios autenticados. Por lo tanto, IIS no puede mostrar esa página al usuario y, en su lugar, muestra una página en blanco.

Hay al menos dos formas de solucionar este problema: cambie sus httpErrors a:

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

Al cambiar el modo de respuesta a File, iis ya no ejecuta una URL y, en su lugar, carga el contenido de un archivo y lo envía al usuario. Esto siempre funciona independientemente del estado de autenticación. La ruta es relativa a la raíz del sitio web.

La otra opción es agregar un web.config a sus carpetas de errores y permitir la autenticación anónima para este directorio; después de todo, solo tiene páginas de error.

información relacionada