如果得到3xx状态代码,php-ccurl会立即重定向


php curl immediately redirect if got 3xx status code

我正在用php和curl创建web抓取。我看,如果http响应的状态代码是3xx,curl仍然下载正文内容。如果正文内容很小,我认为这没有问题,但在我的情况下,有3xx的页面和巨大的正文内容。我只想立即重定向,如果它得到3xx而没有得到正文内容。如何做到这一点?

首先,您需要告诉它只有小于4xx的状态才是好的。

$handle = curl_init(); 
curl_setopt($handle, CURLOPT_FAILONERROR, true);

CURLOPT_FAILONERROR
TRUE表示如果返回的HTTP代码为大于或等于400。默认行为是返回页面正常,忽略代码。

其次,对于3xx错误,您需要遵循重定向。参见CURLOPT_FOLLOWLOCATIONCURLOPT_MAXREDIRS