ASP.NET、HTTP 404およびSEO

最近、私のSEOオプティマイザーは、ASP.NETが404の状況、つまりページが見つからなかった場合にHTTP応答を返す方法に満足していないと言った。 私はいろいろと調べ始めて、誰かに役立つかもしれない興味深い点をいくつか見つけました。



1)通常、デフォルトでは、いわば、このようなweb.config設定で404をキャッチします



<customErrors defaultRedirect = "GenericError.htm" mode = "On">



<error statusCode = "404" redirect = "404.html" />



</ customErrors>





Odanko、このアプローチには、SEOオプティマイザーが私に言った問題があります。 少しテストして、ASP.NETが404エラーの場合に返すHTTPコードの種類を見てみましょう。







したがって、最初に302(リダイレクト)を取得し、次に200を取得します。つまり、すべて正常です。 しかし、これは実際には、判明したように、SEOの最適化には良くありません。



問題: ASP.NETは、ページが見つからず、コード200のページにエラーをリダイレクトするだけではない状況でHTTP 404コードを返す必要があります。



解決策1



web.configを少し変更して、静的HTMLファイルではなく、.aspxでリダイレクトが行われるようにします



<customErrors defaultRedirect = "GenericError.htm" mode = "On">



<error statusCode = "404" redirect = "404.aspx" />



</ customErrors>





この404.aspxページのPage_Loadに次のコードを追加します



protected void Page_Load(object sender, EventArgs e)

{

Response.StatusCode = 404;

}









ではテストしてみましょう







よく見えますが、出力に404コードが残っていますが、最初の302リダイレクトコード、次に404という二重の答えがあるので、私のSEOは満足していません。 404コードだけで、1つの答えを返す必要があります。



決定2



web.configの設定をコメントアウトしましょう



<!-<customErrors defaultRedirect = "GenericError.htm" mode = "On">



<error statusCode = "404" redirect = "404.html" />



</ customErrors>->





さて、次のコードをglobal.asaxファイルに追加するか、突然このファイルがプロジェクトにない場合は、最初にプロジェクトに追加します。 コードのロジックは、404エラーをキャッチし、エラー情報をページにリダイレクトすることです。



protected void Application_Error(object sender, EventArgs e)

{

Exception ex = Server.GetLastError();

if (ex is HttpException)

{

if (((HttpException)(ex)).GetHttpCode() == 404)

Server.Transfer("~/404.html");

}

//

Server.Transfer("~/GenericError.htm");

}







わかりました、今私達はテストします







ヤフー、ASP.NETからエラーのために大切な孤独な404コードを受け取りました。 CEOオプティマイザーは満足し、私も興味を持って時間を過ごしました:)



たぶん誰かが助けるでしょう;)



All Articles