Если вы хотите получать что-то снова и снова, пока не получите желаемый результат, вам, вероятно, всегда понадобится рекурсия .Похоже, ваш код выполняется только get_headers
один раз, поэтому вы будете знать только первый результат заголовка и ничего больше.
Что-то подобное должно сработать:
$url = 'https://google.com';
$httpCode = '';
while ($httpCode !== 'HTTP/1.0 200 OK') {
$headers = get_headers($url, 5);
$httpCode = $headers[0]; // May not be the this key, but you will figure that out yourself.
if (array_key_exists('Location', $headers) && !empty($headers['Location']) {
$url = $headers['Location'];
echo sprintf(' -> %s', $url);
} else {
break; // The location header is not set, so we have no idea where to follow to.
}
}
Это решениеможет быть не идеальным и может потребовать немного проб и ошибок.Я могу предложить вам использовать некоторые библиотеки, поскольку почти всем когда-либо приходилось выполнять какие-то запросы в PHP, и есть очень хорошие библиотеки, такие как Guzzle , которые делают все намного проще.