2010-11-22 8 views
2

あなたのサイトにページが存在しない場合はどうすればよいですか? .htaccessにカスタムエラーページが設定されている場合は、404のページに404の一時的なリダイレクトを送信します(404のヘッダーを送信します)。これはどのように動作するのでしょうか?または、エラーページに301の永久リダイレクトを行う必要がありますか?私はPHPとApacheを使用しています。Webページが存在しない場合は、どのヘッダを返す必要がありますか?

答えて

5

存在しないページは存在しないファイルについてのページに「一時的に移動」(301)または「永久に移動」(302)されていません。送信する正しいヘッダーは404であり、他のものではありません。

代わりにリダイレクトしないでください。代わりに、要求されたURLの「ファイルが見つかりません」ページのコンテンツを配信してください。

+0

をしかし、私のページが動的に生成される(申し訳ありませんことを言及するのを忘れてしまった)ので、私はその場合の有効なページので、カントをチェックするためにページをロードする必要があります:PHPから404ヘッダとは、同様にエラーページを養います私の.htaccessファイルからリダイレクトされますか? – Luke

+1

'header()'を使ってPHPから404ヘッダを送ることもできます。 – GolezTrol

+0

ページを生成するPHPファイルにすべてのURLを書き換えなければなりません。そのPHPファイルは、提供するコンテンツが見つからない場合は、404ヘッダーと「ページが見つかりません」というテキストを送信できます。例についてはGolezTrolの後の答えを参照してください。 –

7

決して存在しない場合は、404 Not Foundを送信してください。

以前は存在していたが、もはや存在しない場合は、410 Goneを送信する必要があります。

エラー応答を直接送信するようにサーバーを設定します。

エラーページにリダイレクトしないでください。それは本質的に会話が行くことを意味します:

  • ブラウザ:/ fooはありますか?
  • サーバー:/ barは/ barにあります。
  • ブラウザ:/ barを使用できますか?
  • サーバー:/ barが見つかりません。

餌とスイッチは決して素敵ではありません。

+0

+1笑、餌とスイッチ! –

1

404.htmlのような静的エラーページがある場合は、ページが見つからないときにそのApacheが表示され、動的ページに404ページも配信できるようにする必要がある場合は、

<?php 
header("HTTP/1.0 404 Not Found"); 
readfile("404.html"); 
?> 
関連する問題