web-dev-qa-db-ja.com

410ステータスコードを指定してWebサイトから一部のコンテンツを削除する

ウェブサイトから完全に削除するコンテンツがあります。これは完全に削除されるため、ステータスコード410を与える予定です。

PHPページでステータスコードを返すことができます

header( "HTTP/1.1 410 Gone" );
exit

または.htacccessで書き換えルールを使用して

RewriteRule ^deleted/ - [L,R=410]

ここまでははっきりしている。ただし、一部のページが利用できなくなった理由を説明するために、ユーザーを別のページにリダイレクトしたいと思います。

では、410コードの別のページへのリダイレクトは問題ありませんか?そのようなページ(検索エンジンがリダイレクトと見なす可能性のあるページ)にリダイレクトするのは混乱しているように感じるが、同時に410コードを与えるので、私は特にこれを求めています。

これに対する正しいアプローチは何ですか。助けてください。

1
Kiran

では、410コードの別のページへのリダイレクトは問題ないのでしょうか?

リダイレクトは必要ありません。カスタム410エラードキュメントを定義します。

ErrorDocument 410 /error-docs/e410.php

以前と同じように、.htaccessで410をトリガーします。

RewriteRule ^deleted/ - [G]

GフラグはR=410の単なるショートカットであり、Lフラグは必要ありません(これは、3xx以外のステータスコードを使用している場合に暗示されます)。

エラードキュメント/error-docs/e410.phpは、内部サブリクエストを使用して呼び出されます(外部リダイレクトはありません)。

e410.phpでは、異なるURLに特定のメッセージを配信したい場合、410をトリガーしたURL(つまり$_SERVER['REDIRECT_URL'])を調べることができます。

そのようなページ(検索エンジンがリダイレクトと見なす可能性があるページ)にリダイレクトするのは混乱しているように感じるので、私は特にこれを求めていますが、同時に410コードを与えています。

はい、それは混乱し、非効率的です。検索エンジンは最終的に410 Goneステータスを表示しますが、間接的に「機能」するはずです。しかし、これは非効率的です(2つの要求/応答)-3xxの後に410が続きます(2番目では、リダイレクトされた-応答)。エラードキュメントに「リダイレクト」する場合、最初に410をトリガーした最初のリクエストの詳細を調べることはできません。

参照:

2
MrWhite