我正在尝试修复网站上的链接。我必须检查404页面上的所有链接。我使用php curl来检查响应http代码。但奇怪的是它总是返回200 OK。
以下是is_404()
的代码,
$curl = curl_init($url);
//don't fetch the actual page, you only want to check the connection is ok
curl_setopt($curl, CURLOPT_NOBODY, true);
//do request
$result = curl_exec($curl);
$ret = true;
//if request did not fail
if ($result !== false) {
//if request was ok, check response code
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 200) {
$ret = false;
}
}
curl_close($curl);
return $ret;
即使在显示404页面的页面上,我也总是返回200 OK。服务器使用适当的页面处理所有404。
任何帮助将不胜感激!
答案 0 :(得分:1)
我有同样的问题,直到我理解这是因为我的网络配置中有多个故障转移IP
host A ( failover ip1,failover ip2 )
host B ( failover ip1,failover ip2 )
curl在主机B上创建误报,因为它默认解析了IP,即使故障转移指向主机A,该呼叫也在本地
也许你的配置也一样?
解决问题的简单解决方法:
curl_setopt($ch, CURLOPT_INTERFACE, "eth0");