В ответ на комментарий user437797 к ответу Тамика Созиева (к сожалению, у меня нет репутации, чтобы комментировать там напрямую):
CURLINFO_EFFECTIVE_URL работает нормально, но для того, чтобы он действовал так, как хочет операционная система, вы также должны установить для CURLOPT_FOLLOWLOCATION значение TRUE, конечно. Это потому, что CURLINFO_EFFECTIVE_URL возвращает именно то, что говорит, эффективный URL, который в итоге загружается. Если вы не следуете перенаправлениям, тогда это будет запрошенный вами URL, если вы будете следовать перенаправлениям, это будет последний URL, на который перенаправляется.
Приятной особенностью этого подхода является то, что он также работает с несколькими перенаправлениями, тогда как при самостоятельном получении и разборе HTTP-заголовка вам может потребоваться сделать это несколько раз, прежде чем будет отображен окончательный URL-адрес назначения.
Также обратите внимание, что максимальное количество перенаправлений, которые следует за curl, может управляться через CURLOPT_MAXREDIRS. По умолчанию оно не ограничено (-1), но это может привести к неприятностям, если кто-то (возможно, намеренно) настроит бесконечный цикл перенаправления для некоторого URL.