迁移到https后卷曲返回301错误

时间:2018-05-07 18:24:39

标签: php curl http-status-code-301

我们最近迁移到了SSL,除了一个功能外,该网站运行良好。该函数使用下面代码中的curl来执行位于同一服务器上的api。 该函数的url变量是: news.hubsdev.com/administrator/index.php?option=com_api&task=acymailing.listcreate $ ch变量是 - resource id =' 384'类型='卷曲'

        $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
    curl_setopt($ch, CURLOPT_POST, count($data));
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);

回复是

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://news.hubsdev.com/administrator/index.php?option=com_api&amp;task=acymailing.listcreate">here</a>.</p>
</body></html>

我们正在使用AWS上托管的PHP 5.6版。我测试了ssl证书,并通过了&#34; A&#34;。

如何确定收到此错误的原因?

谢谢! 肯

1 个答案:

答案 0 :(得分:3)

您需要使用CURLOPT_FOLLOWLOCATION选项跟踪重定向:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

来自documentation

  

TRUE以跟随服务器作为部分发送的任何“Location:”标头   HTTP标头(注意这是递归的,PHP将遵循尽可能多的   除非CURLOPT_MAXREDIRS是,否则“Location:”标题将被发送   设定)。

或者您只需在代码中使用https://即可避免重定向。