使用Curl PHP获取最终重定向

使用Curl PHP获取最终重定向,php,redirect,curl,http-headers,url-redirection,Php,Redirect,Curl,Http Headers,Url Redirection,我必须从this:获取最终重定向url,它实际上重定向到: 我尝试了其他stackoverflow答案的答案,这些答案适用于其他网站,但不适用于上面的链接 我已尝试提取常规位置标题: if(preg_match('#Location: (.*)#', $html, $m)) $l = trim($m[1]); 还检查了javascript方式: preg_match("/window\.location\.replace\('(.*?)'\)/", $html, $m) ? $m[1] :

我必须从this:获取最终重定向url,它实际上重定向到:

我尝试了其他stackoverflow答案的答案,这些答案适用于其他网站,但不适用于上面的链接

我已尝试提取常规位置标题:

if(preg_match('#Location: (.*)#', $html, $m))
 $l = trim($m[1]);
还检查了javascript方式:

preg_match("/window\.location\.replace\('(.*?)'\)/", $html, $m) ? $m[1] : null;
请帮忙

CURLINFO\u REDIRECT\u URL
CURLINFO\u EFFECTIVE\u URL
一起使用,具体取决于您的用例

CURLINFO\u REDIRECT\u URL
-禁用
CURLOPT\u FOLLOWLOCATION
选项:在上一个事务中找到的重定向URL,接下来应手动请求。启用
CURLOPT\u FOLLOWLOCATION
选项时:该选项为空。这种情况下的重定向URL可在
CURLINFO\u EFFECTIVE\u URL

--

例子:
我以前试过,只是又试了一次,但出于某种原因,它会输出初始url。。。你能修改代码让它工作吗?你链接的代码有两个问题。1) 您正在测试的url无效。(您可以将其更改为
https://google.com/
,它重定向到
https://www.google.com/
)2)调用
curl\u getinfo($ch,CURLINFO\u EFFECTIVE\u URL)
需要在调用
curl\u exec($ch)
后立即移动,因为在调用时,重定向还没有被遵循。感谢您指出,但是我测试的url是有效的,因为它是我运行curl的url(在问题描述中也提到过),我也尝试过不同的getinfo调用位置,但它仍然返回相同的结果。。。看起来重定向是在初始页面加载几秒钟后通过Javascript或某些刷新元标记完成的,curl不会跟随页面。请检查问题中提供的链接。我指的无效url就是那个,这绝对不对。它在域名中有一堆点,点,点。而且,curl不解析任何javascript。您只能使用curl执行HTTP级别的重定向。我将用一个仅适用于curl的示例来更新我的代码,以说明HTTP重定向功能https://w...content-available-to-author-only...e.org/web/20070701005218/http://w...content-仅对作者可用…s.com/
这是网站()在php脚本中屏蔽URL的方式,并且它只对post author可用,但它不会影响脚本工作(您可以通过分叉/编辑它来重新运行它)。该站点只是一个php沙盒。若你们的例子不能从问题描述中找到url,我不能接受。正如问题所述,我以前尝试过不同的解决方案,包括您提供的解决方案,但我正在寻找针对特定url的解决方案
<?php
$url = 'https://google.com/';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

$html = curl_exec($ch);

$redirectedUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

curl_close($ch);

echo "Original URL:   " . $url . "\n";
echo "Redirected URL: " . $redirectedUrl . "\n";
Original URL:   https://google.com/
Redirected URL: https://www.google.com/