Я пытаюсь установить ссылки на веб-сайте. Я должен проверить 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 с соответствующей страницей.
Любая помощь будет оценена!
У меня была такая же проблема, пока я не понял, что это связано с множественным переходом на отказ в моей конфигурации сети
host A ( failover ip1,failover ip2 )
host B ( failover ip1,failover ip2 )
curl создает ложный позитив на хосте B, потому что он разрешает по умолчанию IP, даже если точка переключения переадресации на хост A, вызов был локальным
возможно, это так же в вашей конфигурации?
простую обходную проблему, которая устраняет мою проблему:
curl_setopt($ch, CURLOPT_INTERFACE, "eth0");