PHP Curl Check 404: всегда возвращать HTTPCODE 200 OK

0

Я пытаюсь установить ссылки на веб-сайте. Я должен проверить 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;

Я всегда возвращаю 200 OK даже на странице, где отображается 404 страница. Сервер обрабатывает все 404 с соответствующей страницей.

Любая помощь будет оценена!

Теги:
curl
nginx
http-status-code-404

1 ответ

1

У меня была такая же проблема, пока я не понял, что это связано с множественным переходом на отказ в моей конфигурации сети

host A ( failover ip1,failover  ip2 )

host B ( failover ip1,failover  ip2 )

curl создает ложный позитив на хосте B, потому что он разрешает по умолчанию IP, даже если точка переключения переадресации на хост A, вызов был локальным

возможно, это так же в вашей конфигурации?

простую обходную проблему, которая устраняет мою проблему:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню