こんにちは、私の。htaccessファイルの現在の設定では、404を一切許可していません(私の知る限り)。
つまり、mysite.com/asfasfasf
のようなすべての種類のURLをキャプチャし、index.php?lang=asfasfasf
に送信してから、index.php 301がmysite.com/en
にリダイレクトします。
とにかく、
入力としてプロジェクト名を使用するギャラリーページがあるので、厄介なユーザーがtypes mysite.com/gallery/asfasfasf
に来て、phpを使用して404.phpページにリダイレクトする必要がありますが、どうすればよいですか?
私のオプションは次のとおりです:
404.php
どちらが最も理にかなっていますか?さらに重要なのは、SEOに最適なのはどれですか?
助けてくれてありがとう!
あなたの場合の正しい方法(つまり、ユーザーが意識的に無効なリソースを要求する)は、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ページでそれを解決することもできます。
404
応答コードを返し、Location
- headerを追加します。ただし、4xx
- codesはLocation
ヘッダーを返してはいけません-3xx
および201
(および202
)応答コードのみ Location
ヘッダーを許可 。SEOの観点からすれば、404のみを使用する必要があります。まず、無効なリソースへのリンクが存在しないようにします。
既存のリソースのアドレスが変更された場合、301を使用するのが理にかなっています。
既存のリソースが削除された場合(410 Gone
のように)、一般的なサイト(ホームページなど)へのリダイレクトはGoogleを満足させますが、ユーザーフレンドリーではないかもしれません(私が読んでいるときに嫌いです) $TOPIC
に関する記事、その記事内のリンクをクリックして、リンクが間違っている合計bcページにリダイレクトされます)。ここでは、Google/Bing/Yahooボットをリダイレクトし、404を他の人に見せるように、いくつかの明るい灰色の帽子を使用できます。
多くの開発者が、リンクが無効な場合にメインページを読み込み、フィードバックを一切行わないようにすることを選択していることを知っています。検索エンジンのインデックス作成などの厳密なSEOの観点からすると、有効なサイトとそのサイトに解決されるため、これはそれほど害になりません。
ただし、ユーザーフィードバックを提供するユーザーフレンドの観点から、またはサイトでの無効なページアクセスの数を追跡するために(セキュリティおよびアクセス管理のため)、何らかの404を配置することをお勧めします。トリガーするサイト全体のルールを作成するか、PHPコード内で404にインクルードし、検証を実行するとデフォルトの失敗が表示されます。そのように単純で、本当にリダイレクトする必要さえありません。
404スローの価値はWeb開発者の間で大いに議論されてきましたが、どちらの陣営も十分に強力な議論を伴う事実上の標準を提供することができなかったため、個々の開発者がキャンプを選択することになります。