私はApache 2.2.XとPHP 5.2.X(Apacheモジュールとしてインストール)を使用して新しいWebサイトを構築しています。私はどのように処理しようとしているのかをお伝えしたいと思いますサーバーエラー。
ホームページの同じファイル(/index.php)を使ってカスタムエラーメッセージを表示することを考えていました。index.phpをカスタムエラーページとして使用
if (isset($_GET['error']))
DrawErrorPage($_GET['error']);
else
DrawHomepage();
すべてが魔法のように動作:
ErrorDocument 400 /index.php?error=400
ErrorDocument 401 /index.php?error=401
ErrorDocument 403 /index.php?error=403
ErrorDocument 404 /index.php?error=404
ErrorDocument 500 /index.php?error=500
さて、私のindex.phpファイルで、私はこのようになりますいくつかのコードを持っている: これは私の.htaccessの設定です。
まあ、私が修正できない問題以外のすべて:Apacheに500のステータスコード(例えば、.htaccessに不正なコードを挿入する)を強制すると、 "/index.php"にリダイレクトされません?error = 500 "、代わりにデフォルトの500エラーページが表示されます。その他のステータスコード(たとえば、403または404)では、私の設定は完全に完全に機能します。
しかし、今私は疑いがあり、エラーを処理するために別のページを使用するほうが良いと思い始めています(たとえば、 "/error.php")。
"DrawHomepage()"は "robots"メタタグを "index、follow"に設定する必要がありますが、 "DrawErrorPage()"は "noindex、nofollow"に設定する必要があります。右?だから... Webクローラーが私のホームページに初めてアクセスしたときにエラー応答を受け取ったらどうなるでしょうか? Webクローラーが最初に私のホームページを訪れたのは200人でしたが、1ヶ月後に500人が訪れた場合はどうなりますか?エラーを表示していても、「ロボット」メタタグを「索引付け」し続けるとどうなりますか?
この問題の回避策、解決策はありますか?あなたならどうしますか?
多くの感謝! 500のステータスコードがある場合
良いノートを再送信について:
あなたがエラー文書としてPHPファイルを使用している場合、あなたはそのように、適切なページの検出を確実にするために、PHPの内部ヘッダの機能を使用して、HTTPステータスコードを再送信する必要があることを覚えておいてくださいステータスコード。 – FakeRainBrigand
たとえば、私のページに403エラーを表示した場合、403ヘッダを送信する必要がありますか?クローラや一時的なエラーに関係するものは大丈夫ですが、理解していますが、ユーザが "/non-existant.gif"などを入力して "/index.php?error=400"にリダイレクトされた場合でも機能しますか?何が起こるでしょうか?クローラはindex.phpをヒットし、404ステータスコードを受け取ります...インデックスにはそれほど悪くありませんか?どちらの場合でも、どのような種類の「ロボット」メタタグを使用する必要がありますか? –
ユーザーがアクセス権を持たないファイルや存在しないファイルにヒットした場合、理由は問わず、ページは実際にリダイレクトされません。アドレスバーのURLはそのままで、実行された*ファイルはApacheによって変更されます。このファイルはエラーに関するデータを保存し、カスタムページを表示できますが、ボットや誰にアクセスしてもアクセスを停止するように、適切なエラーコード(404など)を送信する必要があります。 index.phpが存在しないと言っているのではなく、アクセスしたパスが存在しないということです。ロボットのメタタグが何を意味するのか分かりません。 – animuson