htaccessで410(Gone)を返すようにして「リソースの削除」を明示する

410 Gone

ウェブサイトやページを削除すると、それ以後のアクセスに対しては自動的に404が返されます。しかしながら、404は単に「見つからない(not found)」ことを意味するにとどまり、「削除された」という意味は含みません。

そのため、ウェブサイトやページを削除した場合には、「削除された」ことを意味している410(Gone)を返すことが理想的です。

スポンサーリンク

404じゃなくて410を返すとどうなるの?

両者の違いを簡単に表すと、404を返すURLにはGooglebotが再訪するが410を返すURLには再訪しない(頻度が下がる)ということです。

HTTPステータスコードの404と410の扱いをGoogleは今は微妙に区別していた | 海外SEO情報ブログ

Googlebotが404を受け取った場合、それ以後も「本当に削除されたのかどうか」を確認するために再訪しますが、410を受け取った場合には、そのページが削除されたことが明確なので再訪しなくなる(頻度が下がる)そうです。

.htaccessを使って410(Gone)を返す方法

ウェブサイトやディレクトリを丸ごと削除した場合

ウェブサイトやディレクトリの中身を丸ごと削除した場合は、そのディレクトリに以下の内容の.htaccessを置きます。

Redirect gone /

以下の内容(URL書き換えを使うパターン)でもOKです。

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

個別のファイルを削除した場合

たとえば、/dir/test.htmlを削除した場合には、dirディレクトリに以下の内容の.htaccessを置きます。

RewriteEngine On
RewriteRule ^test\.html$ - [G]

[追記]WordPressを利用している場合

.htaccessを利用する方法では、WordPressの場合にうまくいきませんでした。「410 for WordPress」というプラグインを使うことをおすすめします。

WordPressプラグイン「410 for WordPress」で410(Gone)エラーを返す

コメント