【问题标题】:Get final redirected status code with curl PHP使用 curl PHP 获取最终重定向状态码
【发布时间】:2017-02-16 05:03:39
【问题描述】:

我想找到某个站点中网页的最终重定向状态代码。在给定的到期日期后,此站点将删除这些页面并将您重定向到其主页并显示 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,而不是状态码。页面重定向完成后如何获取状态码?

【问题讨论】:

    标签: php .htaccess redirect curl


    【解决方案1】:

    既然你找到了答案: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
    

    【讨论】:

      猜你喜欢
      • 2016-05-04
      • 2011-03-05
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多