Таким образом, у меня есть очень простой сайт, это размещается в 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
по умолчанию установлено значение of «DetailLocalOnly», и что из этого следует:
Возвращает подробную информацию об ошибке, если запрос поступает с локального компьютера, и возвращает настраиваемое сообщение об ошибке, если запрос поступает с внешнего компьютера.
Ага! Если ваш запрос приводит к отображению страницы с ошибкой при локальном просмотре , вы получите подробную страницу с ошибкой, а не пользовательскую!
Чуть ниже есть запись для Пользовательское
значение:
Заменяет ошибку, которую генерирует модуль или сервер, на указанную вами настраиваемую страницу. Этот режим полезен для предоставления конечным пользователям более удобных сообщений об ошибках.
Примечание : этот параметр отключает подробные ошибки даже для локальных запросов.
И все, просто добавьте атрибут errorMode
] со значением Custom
для узла httpErrors
, чтобы переопределить значение по умолчанию:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.html" responseMode="ExecuteURL" />
</httpErrors>