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

IIS 8.5 - ошибка при возврате статического файла 404

IIS8.5> Сайты> mysite> Страницы ошибок> 404

Когда я захожу на страницу, которую знаю, что ее нет, я получаю:

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, должно сработать !


РЕДАКТИРОВАТЬ :

Однако обратите внимание, что:

  • Решение 1 отправляет 404 Not Found ответ
  • Решение 2 отправляет 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 исправит эту проблему с интерфейсом в более поздней версии. Просто поясните, пожалуйста, какие-либо ограничения в полях ввода.