Перенаправление 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 10/IIS 8.5 (Протестированный на обоих)
  • Windows 10/Windows 8.1 (Протестированный на обоих)
  • DefaultAppPool
  • Chrome, Край, Internet Explorer, Firefox (Все последние)
1
задан 29 July 2015 в 03:18
1 ответ

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

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

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

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

Чуть ниже есть запись для Пользовательское значение:

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

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

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

<httpErrors errorMode="Custom">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/404.html" responseMode="ExecuteURL" />
</httpErrors>
2
ответ дан 3 December 2019 в 20:49

Теги

Похожие вопросы