私の.htaccess
には
ErrorDocument 404 http://foo.com/404.html
ファイルが見つからないというエラーから回復し、代わりに404ページを表示するという意味では機能しますが、機能する方法は、301を使用してエラーのあるURIを404.html
ページにリダイレクトすることです。
検索エンジンとクローラーは最終的に404コードではなく、301コードを表示し、削除されたページをインデックスから削除しないため、これは悪いことです。
ファイルが見つからないというエラーが発生したときにApacheにこの404ページのコンテンツを提供させることはできますか?それでも301ではなく404コードを返しますか?
URLではなく絶対パスまたは相対パスを使用するようにしてください
私のApache2.conf:
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
構文は、
ErrorDocument <3-digit-code> <action>
アクションが可能な場所、
- 表示するテキスト。テキストを引用符( ")で囲みます。
- リダイレクト先の外部URL。
- リダイレクト先のローカルURL。
外部URLをポイントすると実際のリダイレクトが発生しますが、ローカルURLの使用は内部です。
したがって、ファイルの内容をレンダリングするには、ファイルをポイントするだけです。例:
ErrorDocument 404 /404.html
検索エンジンとクローラーは最終的に404コードではなく、301コードを表示し、は削除されたページをインデックスから削除しないため、これは悪いことです。
ページusedが存在し、現在は存在しない場合、正しい応答コードは 410 Gone です。 410は「ねえ、それは存在しません」と言うコードですが、404は、現在存在しないページへのアクセスを繰り返し試行した後のことを意味すると解釈されます。
MaxenceとAD7sixの回答へのコメント(serverfaulで十分な評判がなく、スタック交換の評判は明らかにカウントされません):
この方法で問題を解決しましたが、URLはまだユーザーが呼び出そうとしていたURLであるため、含まれている画像とスタイルが欠落していました。
解決策は、次のように404ダウメントの先頭にベースタグを追加することです。
ErrorDocument 404
または、プロトコル/ドメイン名の有無にかかわらず絶対URLを使用します。