Подтвердить что ты не робот

Переадресация по умолчанию для 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 не

4b9b3361

Ответ 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>