web-dev-qa-db-ja.com

Apache ErrorDocumentに301ではなく404を返すようにできますか?

私の.htaccessには

ErrorDocument 404 http://foo.com/404.html

ファイルが見つからないというエラーから回復し、代わりに404ページを表示するという意味では機能しますが、機能する方法は、301を使用してエラーのあるURIを404.htmlページにリダイレクトすることです。

検索エンジンとクローラーは最終的に404コードではなく、301コードを表示し、削除されたページをインデックスから削除しないため、これは悪いことです。

ファイルが見つからないというエラーが発生したときにApacheにこの404ページのコンテンツを提供させることはできますか?それでも301ではなく404コードを返しますか?

2
coneybeare

URLではなく絶対パスまたは相対パスを使用するようにしてください

私のApache2.conf:

ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
3
Maxence

外部URLを指さないでください

Apacheのドキュメントによると

構文は、

ErrorDocument <3-digit-code> <action>

アクションが可能な場所、

  • 表示するテキスト。テキストを引用符( ")で囲みます。
  • リダイレクト先の外部URL。
  • リダイレクト先のローカルURL。

外部URLをポイントすると実際のリダイレクトが発生しますが、ローカルURLの使用は内部です。

したがって、ファイルの内容をレンダリングするには、ファイルをポイントするだけです。例:

ErrorDocument 404 /404.html

ジョブに適切なステータスコードを使用する

検索エンジンとクローラーは最終的に404コードではなく、301コードを表示し、は削除されたページをインデックスから削除しないため、これは悪いことです。

ページusedが存在し、現在は存在しない場合、正しい応答コードは 410 Gone です。 410は「ねえ、それは存在しません」と言うコードですが、404は、現在存在しないページへのアクセスを繰り返し試行した後のことを意味すると解釈されます。

4
AD7six

MaxenceとAD7sixの回答へのコメント(serverfaulで十分な評判がなく、スタック交換の評判は明らかにカウントされません):

この方法で問題を解決しましたが、URLはまだユーザーが呼び出そうとしていたURLであるため、含まれている画像とスタイルが欠落していました。

解決策は、次のように404ダウメントの先頭にベースタグを追加することです。

ErrorDocument 404

または、プロトコル/ドメイン名の有無にかかわらず絶対URLを使用します。

0
Jens-Erik Weber