要求されたコンテンツが見つからない場合に404ページにリダイレクトされるASP.NETアプリがあります。これは次のように行われます。
var data = MyDatabase.RetrieveData(dataID);
if (data == null)
Response.Redirect("~/My404Page.aspx");
これはユーザーにとって素晴らしい働きをします。ただし、結果として302 Found
(リダイレクト)ではなく404 Not Found
、検索クローラーには理想的ではありません。404ステータスコードを返し、ユーザーに役立つコンテンツを表示したいのですが。
有名なインターネットの最も厄介な404ページがこれを行います。そのドメインに不正なURLを入力し、Fiddlerのようなもので結果を見ると、実際には404コードが返されます。
私はこれを試しました:
Response.StatusCode = 404;
これにより、404コードが適切に設定されますが、ページのレンダリングは続行されます。私もこれを試しました:
throw new HttpException(404, "Not Found");
ただし、これは、他のキャッチされない例外の場合と同じことを行います(302
サーバーエラーページにリダイレクトします)。
自分でステータスコードを設定し、応答へのjavascriptリダイレクトを作成することを含むカスタムロジックを介して、アプリでこれを解決する方法を見つけました。しかし、私が望んでいるのは、このリクエストが処理を停止し、404エラーページ(IISまたはweb.configのいずれかで指定できると信じています)にリダイレクトする必要があることをコードビハインドで表現する方法です。これは可能ですか?