Чтобы настроить обработку 404 на основе предложения хостинговой компании, в настоящее время мы используем следующую настройку web.config. Однако мы быстро поняли, что с этой конфигурацией любая ошибка страницы (ошибка 500) также перенаправляется на эту страницу пользовательской ошибки. Как я могу изменить этот файл конфигурации, чтобы мы могли продолжать обрабатывать ошибку 404 с помощью специального файла, при этом сохраняя возможность просмотра ошибок на странице?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultPath="/Custom404.html" defaultResponseMode="ExecuteURL">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Custom404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
</customErrors>
</system.web>
</configuration>
Попробуй это -
<configuration>
<system.webServer>
<httpErrors errorMode="Custom" defaultResponseMode="File" >
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="404"
path="404.html" />
<error statusCode="500"
path="500.html" />
</httpErrors>
</system.webServer>
</configuration>
Страница ошибки 404 - это 404.html, и она находится в моем корне, как и страница 500.
Я обнаружил множество сложных обходных путей для классического ASP в IIS 7.5 для работы с типом пользовательской обработки ошибок IIS 6 для определенного кода ошибки, обычно 404. Я надеюсь, что это поможет людям, которые наткнулись на него.
Я использую IIS 7.5 R2, но думаю, что это применимо к IIS 7 в целом.
Если в вашем файле web.config есть это:
<customErrors mode="On">
... в диспетчере IIS вы, вероятно, выбрали Edit Features в разделе Error Pages, чтобы изменить функции на панели Edit Error Pages Settings. Если вы измените это значение на Custom Error Pages (customErrors mode = "On"), вы будете вынуждены настроить обработку каждого номера ошибки. Так что не делай этого.
Все, что вам нужно сделать, это щелкнуть ПРАВОЙ кнопкой мыши на номере ошибки, которую вы хотите обработать, и выбрать Edit. Там вы можете указать на настраиваемую страницу ошибки, которую вы создаете или перенаправить на URL-адрес. Вместо того, чтобы создавать настраиваемую страницу ошибок, которую вы должны не забывать обновлять при изменении дизайна вашего сайта или меню, я всегда предлагаю перенаправить на домашнюю страницу и добавить что-нибудь в строку запроса, например? Syserror, которую вы затем можете обработать с домашней страницы. Мой метод состоит в том, чтобы проверить это в сценарии домашней страницы и показать дружественное сообщение, сообщающее им, что их страница не найдена, и они были направлены на домашнюю страницу.
Ваш файл web.config будет выглядеть примерно так:
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath=""
path="http://yoursite.com/index.asp?syserror" responseMode="Redirect" />
</httpErrors>
Я также предлагаю вам не включать подробные сообщения об ошибках на рабочем веб-сайте в качестве меры безопасности, даже для локального. Просто посмотрите подробности в своем системном журнале.
Только мои 2 цента, надеюсь, это поможет, и, пожалуйста, дайте мне знать, если вы думаете, что я ошибаюсь в чем-то здесь.
Классический ASP по умолчанию не передает ошибку в IIS7. Чтобы включить это для сайта, запустите следующую команду из командной строки, обязательно заменив {sitename} своим именем site:
c: \ windows \ system32 \ inetsrv \ appcmd.exe установить config "{sitename}" -section: system.webServer / httpErrors / existingResponse: "PassThrough" / commit: apphost
Кроме того, обязательно поверните выключен Ошибки, дружественные к IIS. Они действительно не дружелюбны.
Просто добавьте еще одно значение для 500 ошибок.
<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
<error statusCode="500" redirect="/Custom500.html" />
</customErrors>