Переадресация по умолчанию для Error 404
Я хочу представить функциональность на моем веб-сайте ASP.net, чтобы при получении запроса для неизвестного URL-адреса в моем домене пользователь перенаправляется на мою страницу error_404.htm
в корне приложения.
Например, если запрос http://www.mydomain.com/blahblahblah
Затем вместо того, чтобы возвращать стандартную страницу ошибки 404, я хочу, чтобы она перенаправляла запрос на http://www.mydomain.com/error_404.htm
Обновление
IIS версии 7.5 и .NET Framework версии 4
Обновление
/blah.aspx
перенаправляет, но /blah
не
Ответы
Ответ 1
Так вы настраиваете пользовательскую страницу ошибок 404 для запросов ASP.NET и nonASP.NET:
<configuration>
<system.web>
<compilation targetFramework="4.0" />
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="http404.aspx" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="/http404.aspx" responseMode="ExecuteURL"/>
</httpErrors>
</system.webServer>
</configuration>
Как уже указывалось другими, вы не должны использовать перенаправление HTTP для отправки пользователя на домашнюю страницу, это не только путает пользователей, но и машины (например, поисковые системы). Важно использовать код статуса 404, а не код 3xx.
Вы можете добиться желаемой функциональности, используя мета-обновление в HTML:
<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Not Found</title>
<meta http-equiv="refresh" content="5;url=/"/>
</head>
<body>
<h1>Not Found</h1>
<p>Redirecting to Home...</p>
</body>
</html>
Ответ 2
Вы можете указать своих пользователей на пользовательский 404, включив раздел customErrors
в свой web.config.
<customErrors mode="On" defaultRedirect="~/errors/GeneralError.aspx">
<error statusCode="404" redirect="~/errors/PageNotFound.aspx" />
</customErrors>
Как уже отмечалось в комментариях выше, отправка пользователей на главную страницу будет не только раздражающим, но и функционально запутанным.
Моим советом было бы отправить пользователя на страницу, которая даст им некоторую информацию о том, что произошло, и предложит им следующий шаг (просмотрите другие продукты, вернитесь на свою панель инструментов и т.д.).
Ответ 3
В моем случае сработало изменение "ResponseRewrite" на "ResponseRedirect":
Конфигурация файла MVC Webconfig:
<system.web>
<compilation targetFramework="4.0" />
<customErrors mode="On" redirectMode="ResponseRedirect">
<error statusCode="404" redirect="~/Home/Login" />
</customErrors>
</system.web>
</configuration>