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オプティマイザーは満足し、私も興味を持って時間を過ごしました:)

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

Source: https://habr.com/ru/post/J95007/


All Articles