На хостингере все работает, просто запрещены редиректы.
Это ограничение можно обойти написав свою реализацию curl_exec().
например:
public function curl_redir_exec($ch)
{
if (self::$curl_loops++ >= self::$curl_max_loops)
{
self::$curl_loops = 0;
return FALSE;
}
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
//$header = '';
//var_dump($data);
list($header) = explode("\n\n", $data, 2);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code == 301 || $http_code == 302)
{
$matches = array();
preg_match('/Location:(.*?)\n/', $header, $matches);
//print_r($matches);
$url = @parse_url(trim(array_pop($matches)));
if (!$url)
{
//couldn't process the url to redirect to
$curl_loops = 0;
return $data;
}
$url['query'] = ''; // костыль в ооп
$last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));
if (!$url['scheme'])
$url['scheme'] = $last_url['scheme'];
if (!$url['host'])
$url['host'] = $last_url['host'];
if (!$url['path'])
$url['path'] = $last_url['path'];
$new_url = $url['scheme'] . '://' . $url['host'] . $url['path'] . ($url['query']?'?'.$url['query']:'');
curl_setopt($ch, CURLOPT_URL, $new_url);
//debug('Redirecting to', $new_url);
//echo $new_url;
return $this->curl_redir_exec($ch);
} else {
$curl_loops=0;
return $data;
}
}
так как необходимость во встроенных редиректах отпадает, устанавливаем CURLOPT_FOLLOWLOCATION => false
p.s. не забываем, что это своего рода костыль, но, за неимением лучшего хостинга, для разработки вполне сойдет :)