Пользовательская страница ошибки 404 IIS 7.5 не работает для корневого индекса в Интернете / по умолчанию - PullRequest
2 голосов
/ 03 апреля 2012

Используя IIS 7.5, я создал пользовательскую страницу ошибки 404 (и 403.14), которая отображает содержимое из базы данных, если статический файл не найден.

Другими словами, если я перехожу к http://mysite.com/test/ и физический индекс или файл по умолчанию не найден в этом месте, тогда IIS выполняет мою пользовательскую страницу ошибки 404, которая анализирует URL-адрес и либо отображает страницу, сохраненную в базе данных, либо уведомление о том, что страница не может быть найдена.

Все работает отлично, за исключением того, что IIS не отображает страницу 404 для корневого веб-индекса / страницы по умолчанию.

В корневом веб-каталоге нет файлов - вот мои наблюдаемые результаты:

  • mysite.com: полностью пустая страница
  • mysite.com /: совершенно пустая страница
  • mysite.com / index.aspx: правильно отображается моя пользовательская страница ошибки.
  • mysite.com / default.aspx: правильно отображает мою пользовательскую страницу ошибки.
  • mysite.com / index.htm: правильно отображает мою пользовательскую страницу ошибки.
  • mysite.com /anything_else /: правильно отображает мою пользовательскую страницу ошибки.

Мой файл Web.config содержит:

<httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/_page/" responseMode="ExecuteURL" />
    <error statusCode="403" subStatusCode="14" path="/_page/" responseMode="ExecuteURL" />
</httpErrors>

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

Любая помощь / мысли будут очень благодарны.

корм

1 Ответ

3 голосов
/ 26 апреля 2012

Я решил эту проблему, используя сам корневой веб-индекс в качестве пользовательской страницы ошибок, а не другую страницу, например "/_page/".

Это работало для всего, кроме перенаправления SSL, которое я решилне достаточно большая проблема для удержания проекта.

В системе каждая страница явно настроена на http или https.Если пользователь переходит на страницу https с помощью адреса http, он перенаправляется на версию https и наоборот.Однако использование корневого индекса в качестве пользовательской страницы ошибок означает, что это перенаправление не будет работать для домашней страницы, поскольку IIS по какой-то причине не будет перенаправлять страницу на себя.

Если у кого-то есть идеи, как получитьвокруг этой проблемы я очень ценю ваши мысли.Но первоначальный вопрос по существу решен.

Надеюсь, что это кому-то поможет.

корм

ОБНОВЛЕНИЕ - 17.08.2012:

Что ж, потребовался звонок в службу поддержки Microsoft (утомительный, но в конечном итоге плодотворный), но я наконец нашел ответ на основную проблему

Когда я впервые настроил веб-сервер, я не установил "«Просмотр каталога» по соображениям безопасности.Я не хотел, чтобы веб-клиенты могли видеть файловую структуру.

Что ж, получается, что нужно установить модуль просмотра каталогов (ДАЖЕ, ЕСЛИ ЭТО ОТКЛЮЧЕНО), чтобы IIS отвечал чем-то кроме200OK (и сгенерировать пустую HTML-страницу).

После установки (и оставленной отключенной по соображениям безопасности) IIS теперь отвечает ошибкой 403.14 Forbidden, которую я уже правильно перенаправил в своем файле web.config.

...