web-dev-qa-db-ja.com

エラー404のデフォルトリダイレクト

ASP.net Webサイトに機能を導入して、ドメイン上の不明な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はリダイレクトしません

27
Shekhar_Pro

これは、ASP.NETおよび非ASP.NET要求の両方に対してカスタム404エラーページを構成する方法です。

<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リダイレクトを使用するべきではありません。これはユーザーを混乱させるだけでなく、マシン(検索エンジンなど)をも混乱させます。 3xxコードではなく、404ステータスコードを使用することが重要です。

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>
62
Max Toro

Web.configにcustomErrorsセクションを含めることで、ユーザーにカスタム404を参照させることができます。

<customErrors mode="On" defaultRedirect="~/errors/GeneralError.aspx">
     <error statusCode="404" redirect="~/errors/PageNotFound.aspx" />
</customErrors>

他の人が上記のコメントで述べたように、ユーザーをあなたのホームページに送り返すことは、迷惑なだけでなく、機能的にも混乱を招きます。

私のアドバイスは、何が起こったかについての情報を提供し、次のステップを提供するページにユーザーを送ることです(他の製品を閲覧したり、ダッシュボードに戻ったりするなど)。

4
Jamie Dixon

私の場合、「ResponseRewrite」を「Response Redirect」に変更するとうまくいきました。

My MVC Web Configファイルの構成:

   <system.web>
      <compilation targetFramework="4.0" />
      <customErrors mode="On" redirectMode="ResponseRedirect">
         <error statusCode="404" redirect="~/Home/Login" />
      </customErrors>
   </system.web>
</configuration>
2
Rohit Arora

それは私のために働いています。タグ<system.webServer>の間にこのコードを含めるだけです。

 <httpErrors errorMode="Custom">
      <remove statusCode="404"/>
      <error statusCode="404" path="~/Erro/PaginaNaoEncontrada.aspx" responseMode="Redirect"/>
    </httpErrors>
1
A.Lopes