使用curl PHP

时间:2017-02-16 05:03:40

标签: php .htaccess redirect curl

我想查找特定网站中网页的最终重定向状态代码。在给定到期日期后,该站点将删除这些页面,并使用404状态代码将您重定向到其主页。

假设我要去的其中一个页面是http://example.com/my-page,此页面不再存在。所以它会将我重定向到http://example.com/。我检查了chrome开发人员工具,并发送了404状态代码。

现在问题就在于此。我想检查这个页面是否是404。我有以下PHP功能。

    function findStatus($url)
    {
        $handle = curl_init($url);
        curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);

        /* Check for 404 (file not found). */
        $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);

        curl_close($handle);

        if ($httpCode == 404) {
            return true;
        } else {
            return false;
        }

    }

当我使用上面的功能检查相关页面时,我得到302以进行永久重定向。我想这个函数在重定向之前获取状态代码。

This answer描述了如何获取URL,但不是状态代码。如何在页面重定向完成后获取状态代码?

1 个答案:

答案 0 :(得分:0)

因为您找到答案:Get final redirect with Curl PHP

你非常接近它。 curl_getinfo()可以获得大量信息。

$url = 'http://localhost:8080/loc.php';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

$html = curl_exec($ch);

$info = curl_getinfo($ch);

curl_close($ch);

print_r($info);
# Array
# (
#     [url] => http://localhost:8080/dest.php
#     [content_type] => text/html; charset=UTF-8
#     [http_code] => 404