Дано:
rki.bspu.ru/course/view.php?id=29$max_redirects = 50;
$userAgent = 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_NOBODY, 1);// Не загружать тело ответа
//curl_setopt($ch, CURLOPT_HEADER, 1);// читать ТОЛЬКО заголовок без тела
curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //следовать редиректам
curl_setopt($ch, CURLOPT_POSTREDIR, 7); //Битовая маска, содержащая 1 (301 Moved Permanently), 2 (302 Found) и 4 (303 See Other), чтобы задавать должен ли метод HTTP POST обрабатываться при включенной опции CURLOPT_FOLLOWLOCATION, если произошел указанный тип перенаправления.
curl_setopt($ch, CURLOPT_MAXREDIRS, $max_redirects); // установим максимальное число возможных редиректов
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //а лучше, наверное, сделать так: http://php.net/manual/en/function.curl-setopt.php#110457
//curl_setopt($ch, CURLOPT_USERAGENT, $userAgent ); // прикинемся не курлом, а файерфоксом
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // таймаут ответа
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_exec($ch);
Получаю
Maximum (10) redirects followed.
CURLOPT_POSTREDIR -- это опция для POST, но (видимо, здесь вообще бессмысленна), а
Request URL:http://rki.bspu.ru/course/view.php?id=29
Request Method:GET
Status Code:303 See Other
Remote Address:92.50.156.74:80
Referrer Policy:no-referrer-when-downgrade
Response Headers
view source
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:keep-alive
Content-Language:ru
Content-Length:599
Content-Type:text/html; charset=utf-8
Date:Mon, 21 Aug 2017 05:28:05 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Location:http://rki.bspu.ru/user/policy.php
Pragma:no-cache
Server:nginx
X-Powered-By:PHP/5.6.2
говорит, что GET.
В общем, как заставить curl "пойти" по адресу в Location в этому случае?