Bir web sitesi php dosyaların (robots.txt, favicon.ico) için kontrol edin

4 Cevap php

Ben bazı dosyalar varsa uzak bir web sitesine kontrol etmek istiyorum. Örn. robots.txt ya da favicon.ico. Tabii dosyaları (mod okuyun) erişilebilir olmalıdır.

Yani web sitesi ise: http://www.example.com/ eğer ben http://www.example.com/robots.txt kontrol etmek istiyorum.

I http://www.example.com/robots.txt gibi URL getirilirken çalıştı. Eğer başlığında sayfa bulunamadı hatası alıyorum çünkü dosya varsa ve bazen görebilirsiniz.

Ancak bazı web siteleri bu hatayı işlemek ve tüm olsun o sayfa bulunamıyor söyleyerek bazı HTML kodudur.

Sen durum kodu 200 ile başlıkları olsun.

Yani herkes dosya gerçekten veya varsa kontrol etmek için nasıl bir fikir?

Thanx, Granit

4 Cevap

Onlar HTTP 200 hata sayfası hizmet varsa ben bu tespit güvenilir bir yol var şüphesiz. Bu hata sayfaları bu şekilde hizmet vermek için son derece aptalca olduğunu söylemeye gerek yok ...

Eğer deneyebilirsiniz:

  1. Eğer istenen kaynak için yalnızca başlıklarını veren bir HEAD isteği vermeden. Belki daha güvenilir durum kodları bu şekilde olsun
  2. Content-Type başlığını kontrol edin. Bu ise text/html bunu yerine robots.txt (olarak servis edilmelidir ki text/plain) özel bir hata sayfası olduğunu varsayabiliriz. Aynı şekilde faviconları için. Ama ben sadece text/html burada en güvenilir yol olacaktır kontrol düşünüyorum.

Web sitesi size bir başarı durum koduyla bir hata sayfası verir eğer Eh, bu konuda yapabileceği pek bir şey yok.

Sadece robots.txt veya favicon.ico veya çok özel başka bir şey sonra eğer tepki belge doğru biçimde ise doğal olarak, sadece ... kontrol edebilirsiniz gibi {[(0) ]}, {robots.txt içermesi ve favicon.ico bir görüntü dosyası olmalıdır izin verilen [(3)]} ihtiva eden malzeme olmalıdır.

Ben şimdiye kadar ele yolunda URL sunucu yönlendirmek çalışırsa bile, bunu yapmak için CURL ile hızlı işlevini kullanın:

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";
}

. Txt dosyası için başlık içerik türü text / düz olabilir, bu yüzden metin alırsanız / basit bir metin dosyası değil html gerekir.

Bir resim genellikle image / png veya image / gif olacak gibi içerik türünü almak gerekir bir resim olup olmadığını kontrol etmek için. Aslında bir görüntü olup olmadığını kontrol etmek için PHP'nin GD kütüphanesi kullanma imkanı da vardır.