410エラーとはどんなエラーなのか設定してみた

410エラーとはどんなエラーなのか設定してみた

HTTPステータスコードに410があることを知る機会があり、どんなエラーなのか興味がわきました。

410エラーとはウェブサイトのページをリクエストして返ってきたレスポンスでどんな意味があるエラーコードなのか理解してから、テスト環境のサイトで実際に.htaccessを使用して410エラーを設定してみたときのことをまとめておきます。

 

410エラーとはどんなエラーなのか

 

410エラーとはウェブサイトの何かしらのページへURLでアクセスしたとき、アクセスしたページを表示するために必要なファイルがサーバーに存在していないなどの理由で利用できなくなっていることを意味します。

410エラーとは何か分かりやすく理解しておきたかったので410ページを実際に表示してみました。

 

 

410エラーのページには英語で「Gone」という見出し付きのページが表示します。

Goneを翻訳してみると「なくなった」という意味になります。

 

Goneの下の文章も翻訳してみることに。

要求されたリソース
/gone/gone.html
このサーバーでは使用できなくなり、転送先アドレスはありません。 このリソースへのすべての参照を削除してください。

 

翻訳した結果を元に上記の410エラーページでの410エラーとは、https://〇〇〇.com/gone/gone.htmlのページに必要なリソース(ファイルなど)をサーバーにリクエスト(要求)したけど、gone.htmlがサーバーに存在しないし、転送先のURLもないという結果になりました。という意味なことが分かります。

つまり410エラーとは「そのページを削除して表示するファイルがない状況を設定で作り出せば、410エラーになるのですね。

 

.htaccessで410エラーを設定してみる

 

ウェブサイトに使用しているサーバーでApacheを使用している場合には、410エラーを.htaccessで意図的に設定することができます。

テストサイトを使用して410エラーを設定してみることに。

goneフォルダを作成した中にgone.htmlと.htaccessを作成して配置しておきます。

そして.htaccessに以下のリライトルールでgone.htmlファイルが410エラーになるように記述します。

 

RewriteRule ^gone\.html$ - [G]

 

リライトルールがマッチするように行頭^と行末$の間にgone.htmlを指定しますが、別のページにリライトするわけではないので、-の記述と[G]のフラグで410 Goneを適用します。

 

Advertisement

 

.htaccessに410エラーのRewriteRuleを設定した後にgone.htmlにブラウザでアクセスすると、gone.htmlページは.htaccessの設定によって410 Goneのページを表示することができます。

.htaccessで410エラーになる表示はHTMLファイルのgone.htmlをRewriteRuleで設定しているので、たとえばexample.htmlを作成してgoneフォルダに配置し、example.htmlにブラウザでアクセスしてもexample.htmlには410エラーは適用されません。

 

HTTPステータスコード410を確認

 

410エラーとはリクエストの結果をレスポンスで返すときにステータスコードが410になったページのことでもあります。

エラーのないページが表示するときにはHTTPステータスコードは200が返ってきますが、410エラーの場合は410 Goneのステータスコードが返ってきます。

意図的に.htaccessで410エラーを設定した場合でもリクエストしたURLのレスポンスはHTTPステータスコードで410 Goneを返します。

410エラーを設定したgone.htmlページで410エラーのHTTPステータスコードを確認してみると以下の画像の結果になります。

 

 

410エラーのページをFirefoxの検証ツールで確認した410 GoneのHTTPステータスコードです。

つまり410エラーとはリクエストしたページのレスポンス結果がHTTPステータスコード401 Goneとして扱われているページのことを意味します。

 

Advertisement

 

HTTPステータスコードで410エラーを返せるということは、削除したページがまだGoogleにインデックスしているけど、削除したことをクローラーに確認させやすくすために役立ちます。

たとえばhttps://example.com/gone/gone.htmlというURLのページを削除するためにgone.htmlファイルを削除するとHTTPステータスコードは404 Not Foundになります。

404 Not Found は、サーバーがリクエストされたリソースを見つけることができない時のエラーレスポンスコードです。

https://example.com/gone/gone.htmlのページは削除しているため永久的に存在しないページになります。

そのため曖昧な感じがする404 Not Found で対処するのではなく、410のHTTPステータスコードで対処すると、クローラーがページをクロールしたときに410 Goneのページになっていることを確認するので、検索結果からも削除されやすくなります。

 

410 Goneではない410エラーページを設定

 

410エラーがどんなエラーなのか設定を.htaccessでしてみたわけですが、デフォルトの410 Goneページだと見出しや説明文章が分かりづらいです。

410Goneではない独自の410エラーページを設定してみることにします。

まずは410.htmlというHTMLファイルを作成。

作成した410.htmlは.htaccessで410エラーを設定したgoneフォルダに設置します。

次にgoneフォルダに設置している.haccessにErrorDocumentを以下のように記述します。

 

RewriteRule ^gone\.html$ - [G]
ErrorDocument 410 /gone/410.html

 

RewriteRuleはgone.htmlに対して410エラーを適用している設定です。

ErrorDocumentはHTTPステータスコードの410を指定して、ルートからの絶対パスで410エラーページの表示に使用するHTMLファイルを指定します。

そして410Goneではない410エラーページを設定するのはgone.htmlを削除した状況にしたいのでgone.htmlをフォルダから削除。

あとは410エラーページとして作成した410.htmlに、削除済みページなことが分かりやすくなるような文章を書いておきます。

 

 

削除したページにアクセスすると、410Goneではなく、410.htmlに記述した内容が410エラーページとして表示するので独自の410エラーページを削除済みのページに設定できていることが確認できます。

 

簡単にではありましたが、410エラーとはアクセスしたページに使用するファイルが削除されていたり、ページの管理者が意図的に410エラーになる設定をしている場合などに、ページがなくなっていることを説明している文章が表示されるウェブページのことなのでした。

HTMLカテゴリの最新記事