如果我检查http://google.com/或其他网站不起作用且http://stackoverflow.com或cnn.com正常工作,我对此脚本有疑问...
$url = 'http://google.com/';
function urlExists($url=NULL)
{
if($url == NULL) return false;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode>=200 && $httpcode<300){
return true;
} else {
return false;
}
}
if(urlExists($url))
{
echo "ok";
}
else
{
echo "no";
}
我有测试@fopen
而且也没有工作
google这样的网站有拦截器吗?感谢
答案 0 :(得分:0)
你应该改变:
if($httpcode>=200 && $httpcode<300){
为:
if($httpcode>=200 && $httpcode<303){
原因是许多网站默认使用301 Moved Permanently
以及302 Found
。
答案 1 :(得分:0)
您正在使用响应代码http://google.com
响应301
,以便将访问者重定向到http://www.google.com
。在您的逻辑中,301
响应代码被视为离线。
您需要调整正在检查的网址,调整逻辑以接受此响应代码,或者添加以下代码以使cURL遵循重定向。
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
答案 2 :(得分:0)
应该阅读
if($httpcode>=200 && $httpcode<400){
而不是
if($httpcode>=200 && $httpcode<300){
否则,重定向将被视为“服务器关闭”。
通过上述更改,http://google.com
的结果为ok