あなたは 404 エラーの意味をよく理解しておらず、500 エラーと混同しています。
PDO エラーは、ページの存在とは関係ありません。これは、サイトで一時的な問題が発生していることを意味するコード エラーです。したがって、500 を送信する必要があります。
最近の PHP バージョンでは対応する必要があると言われていますが、そうでないという報告もあります。私が知っている唯一の保証された方法は、php-fpm を使用することです。エラーの場合に 503 を送信することは、そのコア機能の 1 つです。
とにかく、少なくとも PHP 設定 (ini または perdir) で display_errors = off を設定してみてください。
次に、コードを次のように変更します。
<?php
echo "Je me connecte a un module foireux et la page est introuvable.";
$pdo = new PDO("n'importe quoi !");
適切に構成された PHP は、自動的に 500 で応答します!
しかし、ページが見つからない場合は、実際に 404 で応答する必要があります。
<?php
$data = DB::getData("SELECT * FROM articles WHERE id=?", $_GET['id']);
if (!$data)
{
throw new http404();
}
wherehttp404()
は、グローバル例外ハンドラーによって処理する必要があるカスタム例外です。404 応答を送信する必要があります。ちょうど
header("HTTP/1.0 404 Not Found");
exit;
Googleにとっては十分でしょう。