4

リモート Web サイトにファイルが含まれているかどうかを確認したいと思います。例えば。robots.txtまたはfavicon.ico。もちろん、ファイルにアクセスできる必要があります (読み取りモード)。

したがって、ウェブサイトが次の場合:http://www.example.com/かどうかを確認したいと思いhttp://www.example.com/robots.txtます。

のようなURLを取得してみましたhttp://www.example.com/robots.txt。また、ヘッダーにページが見つからないというエラーが表示されるため、ファイルが存在するかどうかを確認できる場合もあります。

しかし、一部の Web サイトはこのエラーを処理し、ページが見つからないことを示す HTML コードしか表示されません。

ステータス コード 200 のヘッダーを取得します。

ファイルが本当に存在するかどうかを確認する方法はありますか?

サンクス、グラニット

4

4 に答える 4

3

これを行うには、CURL でクイック関数を使用します。これまでのところ、URL のサーバーがリダイレクトを試みても問題なく処理されます。

function remoteFileExists($url){
$curl = curl_init($url);
    curl_setopt($curl, CURLOPT_NOBODY, true);
    $result = curl_exec($curl);
    $ret = false;
    if ($result !== false) {
        $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);  
        if ($statusCode == 200) {
            $ret = true;   
        }
    }
    curl_close($curl);
    return $ret;
}

$url = "http://www.example.com";
$exists = remoteFileExists("$url/robots.txt");
if($exists){
    $robottxt = file_get_contents("$url/robots.txt");
}else{
    $robottxt = "none";
}
于 2012-04-26T02:33:43.477 に答える
2

HTTP 200 でエラー ページを提供する場合、これを検出する信頼できる方法があるとは思えません。言うまでもなく、エラーページをそのように提供するのは非常にばかげています...

あなたは試すことができます:

  1. リクエストされたリソースのヘッダーのみを生成する HEAD リクエストを発行します。そうすれば、より信頼できるステータスコードが得られるかもしれません
  2. Content-Type ヘッダーを確認してください。その場合は、 (として提供される必要がある)text/htmlの代わりにカスタムエラーページであると想定できます。ファビコンも同様です。しかし、ここでは単純にチェックするのが最も信頼できる方法だと思います。robots.txttext/plaintext/html
于 2009-10-16T10:47:28.470 に答える
1

Web サイトで成功ステータス コードを含むエラー ページが表示された場合、それに対してできることはあまりありません。

当然のことながら、直後robots.txtまたはfavicon.ico非常に具体的な何かがある場合は、応答ドキュメントが正しい形式であるかどうかを簡単に確認できます...含むことが許可されているものを含むrobots.txt必要があり、画像ファイルである必要があります。text/plainrobots.txtfavicon.ico

于 2009-10-16T10:49:07.487 に答える
0

.txt ファイルのヘッダー コンテンツ タイプは text/plain である必要があるため、text/html を受け取った場合、それは単純なテキスト ファイルではありません。

画像が画像であるかどうかを確認するには、通常は image/png または image/gif であるため、コンテンツ タイプを取得する必要があります。PHP の GD ライブラリを使用して、実際に画像かどうかを確認することもできます。

于 2009-10-16T10:51:45.647 に答える