如果它包含一些文件,我想检查一个远程网站。例如。 robots.txt 或 favicon.ico 。当然应该可以访问文件(读取模式)。
因此,如果网站是:http://www.example.com/
,我想检查一下http://www.example.com/robots.txt
。
我尝试抓取http://www.example.com/robots.txt
之类的网址。有时你可以看到文件是否存在,因为你在标题中找不到页面错误。
但是有些网站会处理这个错误,而你得到的只是一些HTML代码,说无法找到该页面。
您获得状态代码为200的标题。
所以任何人都知道如何检查文件是否真的存在?
感谢名单, 花岗岩
答案 0 :(得分: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";
}
答案 1 :(得分:2)
如果他们使用HTTP 200提供错误页面,我怀疑你有一个可靠的方法来检测它。不用说,以这种方式提供错误页面是非常愚蠢的......
你可以尝试:
text/html
,您可以认为它是自定义错误页面而不是robots.txt
(应该作为text/plain
投放)。对于favicons同样。但我认为仅仅检查text/html
将是最可靠的方式。答案 2 :(得分:1)
好吧,如果网站为您提供了一个包含成功状态代码的错误页面,那么您无能为力。
当然,如果您只是在robots.txt
或favicon.ico
或其他非常具体的内容之后,您只需检查回复文档的格式是否正确......就像robots.txt
一样text/plain
包含robots.txt
允许包含的内容,favicon.ico
应为图像文件。
答案 3 :(得分:0)
.txt文件的标题内容类型应为text / plain,因此如果您收到text / html,则它不是简单的文本文件。
要检查图片是否是图片,您需要检索内容类型,因为它通常是image / png或image / gif。还可以使用PHP的GD库来检查它是否实际上是图像。