
私の中に.htaccess
は
ErrorDocument 404 http://foo.com/404.html
これは、ファイルが見つからないエラーから回復し、代わりに 404 ページを表示するという意味では機能しますが、その動作方法は、301 を使用してエラーのある URI を自分の404.html
ページにリダイレクトすることです。
これは、検索エンジンとクローラーが 404 コードではなく 301 コードを認識し、削除されたページをインデックスから削除しないため、問題となります。
ファイルが見つからないエラーが発生したときに Apache にこの 404 ページのコンテンツを表示させ、301 ではなく 404 コードを返すようにすることはできますか?
答え1
URLではなく絶対パスまたは相対パスを使用するようにしてください。
私の apache2.conf :
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
答え2
外部URLを指定しないでください
構文は、
ErrorDocument <3-digit-code> <action>
行動を起こすことができる場所、
- 表示するテキスト。テキストを引用符 (") で囲みます。
- リダイレクト先の外部 URL。
- リダイレクト先のローカル URL。
外部 URL を指定すると実際のリダイレクトが発生しますが、ローカル URL を使用すると内部リダイレクトになります。
したがって、ファイルの内容をレンダリングするには、単にそのファイルを指定するだけです。例:
ErrorDocument 404 /404.html
ジョブに適切なステータスコードを使用する
これは検索エンジンやクローラーが404コードではなく301コードを見ることになるので良くありません。削除されたページはインデックスから削除されません。
ページが使用済み存在していたが今は存在しない場合、正しい応答コードは410 消えた410 は「そのページは存在しません」と伝えるコードですが、404 は、現在存在しないページへのアクセスを繰り返し試みた後にのみ、そのことを意味するものとして解釈されます。
答え3
Maxence と AD7six の回答に対するコメント (serverfaul で十分な評判を持っていません。また、Stack Exchange の評判は考慮されないようです):
この方法で問題を解決しましたが、URL がまだユーザーが呼び出そうとしていた URL であるため、含まれている画像とスタイルが失われました。
解決策は、404ドキュメントの先頭にベースタグを追加することです。
ErrorDocument 404
または、プロトコル/ドメイン名の有無にかかわらず絶対 URL を使用します。