ウェブページを完全に削除したときは404よりも410のHTTPステータスコードを返すといい

今日は技術的なトピックを扱います。

通常、ウェブページがもう存在しなくなったときは404のHTTPステータスコードを返します。
するとしらばくすれば検索結果からも消えます。

しかしGoogleウェブマスターツールでは、ずっと以前になくなったはずのページが「クロールエラー」セクションで「見つかりませんでした」として表示されることがあります。

Googleウェブマスターツールの「見つかりませんでした」

理由は、404エラーを返したページが今でもないままなのか確認するためにGooglebotが再訪問するためです。

404は“Not Found”(見つからない)で、ページがなくなったことではなくアクセスできない状態を示します。
アクセスできない理由は、ページを削除したことではなくネットワークの障害やサーバーの不具合による一時的なものかもしれません。

通常のページよりは頻度が低いですが、その404を返したページを再び訪問して相変わらずないままなのかそれとも再びアクセスできるようになっているかをGooglebotが確かめます。
依然としてページがない状態だと「見つかりませんでした」としてエラーレポートを表示するわけですね。

ランキングが下がるとかペナルティを受けるとかの害があるわけではないので普通は無視して構いません(1万ページも2万ページも404を返したら悪影響があるかもしれませんが)。

でもウェブページが完全になくなったことを伝えたいときには「410」のHTTPステータスコードを返します。

410は“Gone”(消滅)を意味します。
Googleは、現在410をサポートし、404と区別して処理します。

永久になくしたページは、410のHTTPステータスコードを返すことでGoogleの再訪問をなくすことができます(もう2度と完全にアクセスしなくなるわけではありませんがほぼ永久的にアクセスしなくなるようです)。

また、410を返すと404よりも速くインデックスから削除されます。

気にならなければなくしたページは404エラーを返したままで構いません。
たいていのウェブサーバーはURLにアクセスできなければ404エラーを返すので、何もしなくていいでしょう。

でも「急いで検索結果から消したい」というせっかちな人や「Googleウェブマスターツールのエラーを見るとすっきりしない」という潔癖症の人は410エラーを返すと幸せになれます。w

410ステータスコードは、Apacheサーバーなら.htaccessのRewriteRuleで次のように設定することができます。

RewriteRule ^hoge\.html$ - [G]

これは「hoge.html」というファイルを削除したときに使います。
[G]は“Gone”(消滅)を表すフラグです。

「xyz」というディレクトリの中のファイルをすべて削除したときには次のように記述します。

RewriteCond %{REQUEST_URI} ^/xyz/
RewriteRule .* - [G]

今すぐ必要とか頻繁に使うことはないと思いますが、必要な場面が今後出てくるかもしれません。
410ステータスコードの目的と設定方法は覚えておくといいでしょう。