web-dev-qa-db-ja.com

PHPで404エラーをスローするのは理にかなっていますか?

問題の説明

こんにちは、私の。htaccessファイルの現在の設定では、404を一切許可していません(私の知る限り)。

つまり、mysite.com/asfasfasfのようなすべての種類のURLをキャプチャし、index.php?lang=asfasfasfに送信してから、index.php 301がmysite.com/enにリダイレクトします。

とにかく、

質問

入力としてプロジェクト名を使用するギャラリーページがあるので、厄介なユーザーがtypes mysite.com/gallery/asfasfasfに来て、phpを使用して404.phpページにリダイレクトする必要がありますが、どうすればよいですか?

私のオプションは次のとおりです:

  1. 301-場所へのリダイレクト404.php
  2. 404-場所「404.php」へのリダイレクト
  3. 404.phpを忘れて、ギャラリーページに「project "asfasfasf"が存在しません。」と印刷するだけです。

どちらが最も理にかなっていますか?さらに重要なのは、SEOに最適なのはどれですか?

助けてくれてありがとう!

1
jeff

あなたの場合の正しい方法(つまり、ユーザーが意識的に無効なリソースを要求する)は、404応答コードを返すことです。応答の本文は、サイトのユーザーの説明です。 404.phpがテンプレートのようなもので、ほとんどがHTMLコードを含む場合は、includeだけで済みます。それ以外の場合は、"project '$name' does not exist"を表示するのが最善の選択肢です。

したがって、例として、PHPでは次のようになります(もちろん、現代のPHPフレームワークを使用している場合は、ある種のNotFound例外タイプを使用できます)。

if(project_exists($name)) {
    // show the project like you do now
} else {
    // project not found, return a 404 respose code
    header('HTTP/1.0 404 Not Found');

    // generate the response body either by
    // including your 404-page (if it's mostly HTML, like a template)
    include('/path/to/404.php');

    // or just stating that the resource was not found
    echo 'Project "', $name, '" does not exist!';   
}

オプションについて:

  • 番号1はあまり意味がありません-リソースが一度も存在しなかった場合、それをホームページまたは404ページにリダイレクト(コード301または302)しても意味がありません。

    これは、リソースが削除され、新しいパスが何であるかがわかっている場合(たとえば、古いパスと新しいパス/プロジェクト名のマップがある場合)、またはユーザーが望んでいたものを推測して適切なリソースにリダイレクトできる場合にのみ意味があります(たとえば、ファジー検索を使用して、入力ミスしたURLを「修正」できます)。もちろん、「スマートな」404ページでそれを解決することもできます。

  • 番号2は機能しません。正しく理解できれば、404応答コードを返し、Location- headerを追加します。ただし、4xx- codesはLocationヘッダーを返してはいけません-3xxおよび201(および202)応答コードのみ Locationヘッダーを許可

SEOの観点からすれば、404のみを使用する必要があります。まず、無効なリソースへのリンクが存在しないようにします。

既存のリソースのアドレスが変更された場合、301を使用するのが理にかなっています。

既存のリソースが削除された場合(410 Goneのように)、一般的なサイト(ホームページなど)へのリダイレクトはGoogleを満足させますが、ユーザーフレンドリーではないかもしれません(私が読んでいるときに嫌いです) $TOPICに関する記事、その記事内のリンクをクリックして、リンクが間違っている合計bcページにリダイレクトされます)。ここでは、Google/Bing/Yahooボットをリダイレクトし、404を他の人に見せるように、いくつかの明るい灰色の帽子を使用できます。

3
vstm

多くの開発者が、リンクが無効な場合にメインページを読み込み、フィードバックを一切行わないようにすることを選択していることを知っています。検索エンジンのインデックス作成などの厳密なSEOの観点からすると、有効なサイトとそのサイトに解決されるため、これはそれほど害になりません。

ただし、ユーザーフィードバックを提供するユーザーフレンドの観点から、またはサイトでの無効なページアクセスの数を追跡するために(セキュリティおよびアクセス管理のため)、何らかの404を配置することをお勧めします。トリガーするサイト全体のルールを作成するか、PHPコード内で404にインクルードし、検証を実行するとデフォルトの失敗が表示されます。そのように単純で、本当にリダイレクトする必要さえありません。

404スローの価値はWeb開発者の間で大いに議論されてきましたが、どちらの陣営も十分に強力な議論を伴う事実上の標準を提供することができなかったため、個々の開発者がキャンプを選択することになります。

0
GµårÐïåñ