web-dev-qa-db-ja.com

URLがHTTP 404ステータスコードを返すかどうかを確認するにはどうすればよいですか?

特定のURLについて、HTTP 404ステータスコードを返すかどうかを(非)確認するにはどうすればよいですか?

このツール を見つけましたが、他の人のツールとは無関係に、よりクリーンで自然な方法を見つけられませんか?

たとえば、これが リンク切れ が本物の404かどうかを知るにはどうすればよいですか?ソースコードをざっと見てみましたが、404ステータスコードについては何も見ませんでした。

編集

開発者ツール/ Google Chrome Consoleで探していたものを見つけました。壊れたリンクは実際に404であることがわかります。enter image description here

指摘してくれてありがとう!

1
RubenGeert

HTTPステータスコード は、HTTPレベルで送信されるため(たとえば、リソースをリクエストするとき)、HTMLで見つけることができません。サーバーは、ページをリクエストするときにどのステータスを送信するかを決定するため、まったく同じページが404と10秒後に200

さまざまなツールを使用して、受信したHTTPステータスコードを表示できます。

使用できます

  • ほとんどの場合、開発者ツール(Firefoxなど: Ctrl + Shift + q )

  • コマンドラインツール( cURLcurl -I http://en.wikipedia.org/など)

  • webアプリ(あなたが言ったようなもの)

  • …(要件に一致する特定のツールを探している場合は、 Software Recommendations で質問を作成できます)

(ユーザーエージェント、言語設定、IPアドレスなどに基づいて)異なるクライアントが異なる結果を取得する可能性があることに注意してください(つまり、サーバーがそのように構成されている場合)。

3
unor

Firebugがある場合、違いを見ることができます。実際に404ヘッダーを返します。
Webサイトは、404ヘッダーでコンテンツを完全に返すことができます。

header("HTTP/1.0 404 Not Found");
echo file_get_contents('page-not-found.html');

だから:ステータスコードを確認する方法:
cURLソリューションの回答1、get_headers()ソリューションの回答2を参照 、またはコンソールのリソースタブを使用して手動で確認してください

1
Martijn

上記のように、独自の404チェッカーの構築に関心がある場合は、cURLで確認できます。 PHPの例

$resourceUrl = 'http://example.com/test.html';

$ch = curl_init($resourceUrl);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if($statusCode == '404'){
    //resource does not exist
}
1
Wexford

ページスピードでFirebugを使用している場合(一般にWeb開発者に役立つ)、[リソース]タブを見ることができます。

Firebug with Page Speed

これにより、ページ自体を含むページ上のすべてのリソースに対して返されるHTTPヘッダーが表示されます。また、これは、サイト上のものが適切にコーディング/構成されていない場合、404ページへの途中でリダイレクトを識別するのに役立ちます。

0
Andrew Lott