【问题标题】:PHP Curl Check 404 : Always return HTTPCODE 200 OKPHP Curl Check 404:总是返回 HTTPCODE 200 OK
【发布时间】:2015-01-04 00:30:33
【问题描述】:

我正在尝试修复网站上的链接。我必须检查页面上所有链接的 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。

任何帮助将不胜感激!

【问题讨论】:

  • 您确定 404 页面也返回状态码 404?
  • 这或许可以解释问题:stackoverflow.com/questions/23248822/…
  • 所有 404 都有页面显示您输入了错误的 url。全部返回 200 OK 响应。我认为我可能需要为该页面设置 404 http 代码标头。

标签: php curl nginx http-status-code-404


【解决方案1】:

我有同样的问题,直到我明白这是因为我的网络配置中有多个故障转移 ip

host A ( failover ip1,failover  ip2 )

host B ( failover ip1,failover  ip2 )

curl 在主机 B 上创建误报,因为它默认解析 IP,即使故障转移指向主机 A,调用也在本地

也许你的配置是一样的?

解决我的问题的简单解决方法:

curl_setopt($ch, CURLOPT_INTERFACE, "eth0");

【讨论】:

    猜你喜欢
    • 2022-10-04
    • 1970-01-01
    • 2019-10-29
    • 2019-06-20
    • 2019-03-02
    • 2010-09-25
    • 2015-03-16
    • 2016-02-10
    • 2015-04-26
    相关资源
    最近更新 更多