IIS8.5> Сайты> mysite> Страницы ошибок> 404
Выберите «Вставить содержимое из статического файла в ответ об ошибке».
Снимите флажок «Пытаться вернуть файл с ошибкой на языке клиента».
Введите путь к "notfound.html", я убедился, что он там есть.
Когда я захожу на страницу, которую знаю, что ее нет, я получаю:
The page cannot be displayed because an internal server error has occurred.
Почему я не получаю свой собственный файл 404?
Я не думаю, что это вопрос разрешения, я пробовал переместить notfound.html в несколько мест, одним из которых является фактическая папка wwwroot сайта, которая обслуживает остальную часть сайта.
Эта ошибка возникает из-за того, что в web.config
.
Абсолютный физический путь (например, C:\path\to\notfound.html
) не допускается в system.webServer/httpErrors
раздел в web.config
файл.
Теперь у вас есть 2 решения:
1. Разрешить физический путь в ApplicationHost.config
файл
По умолчанию этот файл находится в %SystemRoot%\system32\inetsrv\config
Найдите этот файл и отредактируйте его
Искать раздел <httpErrors ..... >
Затем добавьте директиву allowAbsolutePathsWhenDelegated="true"
, например, следующее:
<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath" allowAbsolutePathsWhenDelegated="true">
....
....
</httpErrors>
Сохраните файл, должно работать!
2. Используйте относительный путь
Относительный путь означает, что вам нужно будет хранить свои собственные страницы ошибок в корневой папке данного веб-сайта.
Затем перейдите к IIS > Sites > mysite > Error Pages > 404
И настройте свою настраиваемую страницу ошибок следующим образом:
Нажмите OK
, должно сработать !
РЕДАКТИРОВАТЬ :
Однако обратите внимание, что:
404 Not Found
ответ200 OK
ответЯ осмотрелся и обнаружил, что есть вещь под названием «allowAbsolutePathsWhenDelegated», для которой по умолчанию установлено значение «false».
IIS8.5 > Sites > mysite > Management > Configuration Editor > system.webServer/httpErrors
Однако значение заблокировано и не может быть изменено там. Итак, я щелкнул корень в дереве и смог отредактировать его там.
IIS8.5 > Management > Configuration Editor > system.webServer/httpErrors
Обратите внимание, что корень на самом деле не называется «IIS8.5», он назван по имени вашего компьютера.
Итак, после того, как для параметра allowAbsolutePathsWhenDelegated было установлено значение true, все работало нормально. Другим решением было бы поместить статический файл в папку wwwroot моего сайта и просто ввести его имя как страницу с ошибкой 404 (хотя в моем случае лучше использовать абсолютный путь, а не относительный).
Что меня беспокоит, так это то, что нигде на экране «Страницы ошибок» нет упоминания об этом ограничении по умолчанию. В нем ничего не говорится о том, что путь должен быть относительно корня вашего сайта, и поскольку значение по умолчанию НЕ относительное (оно находится в папке inetpub), вы предполагаете, что абсолютный путь будет работать нормально.
Надеюсь, Microsoft исправит эту проблему с интерфейсом в более поздней версии. Просто поясните, пожалуйста, какие-либо ограничения в полях ввода.