Назад | Перейти на главную страницу

Перенаправление IIS 404 игнорируется

Итак, у меня есть очень простой сайт, размещенный в IIS (пока только прямой необработанный html без кода .Net)

В моем web.config у меня есть следующее:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors>
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" prefixLanguageFilePath="" path="/404.html" responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</configuration>

Он был добавлен в web.config менеджером IIS и отражает то, что я нашел в Интернете, как действительную конфигурацию для ошибок 404 для перенаправления на мою пользовательскую страницу 404.

Однако я все еще получаю сгенерированный IIS HTTP Error 404.0 - Not Found страницу назад всякий раз, когда я перехожу на страницу, которой не существует.

Есть идеи, что я здесь делаю не так?

Настроить:

Всякий раз, когда элемент конфигурации в моих файлах конфигурации IIS не производит ожидаемого мной поведения, я в первую очередь смотрю на официальные (и довольно подробные) Справочник по настройке IIS.net документация.

Если вы перейдете к httpErrors страница и прокрутите вниз до "Атрибуты", вы обнаружите, что errorMode По умолчанию для атрибута установлено значение «Подробный локальный только», и что из этого следует:

Возвращает подробную информацию об ошибке, если запрос поступает с локального компьютера, и возвращает настраиваемое сообщение об ошибке, если запрос поступает с внешнего компьютера.

Ага! Если ваш запрос приводит к появлению страницы с ошибкой при просмотре локально, вы получите подробную страницу с ошибкой, а не пользовательскую!

Чуть ниже есть запись для Custom стоимость:

Заменяет ошибку, которую генерирует модуль или сервер, на указанную вами настраиваемую страницу. Этот режим полезен для предоставления конечным пользователям более понятных сообщений об ошибках.

Заметка: Этот параметр отключает подробные ошибки даже для локальных запросов.

И все, просто добавляем атрибут errorMode со стоимостью Custom к httpErrors узел, чтобы переопределить значение по умолчанию:

<httpErrors errorMode="Custom">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/404.html" responseMode="ExecuteURL" />
</httpErrors>