PHP获取重定向链接

时间:2014-05-12 10:54:14

标签: php url redirect

我试图获取最终网站的网址即时重定向。 链接我去了http://www.primewire.ag/external.php?url=aHR0cDovL3d3dy5wcm9tcHRmaWxlLmNvbS9sL0RBMTU1RjYwRUYtRkMyNzREQ0Q4RA

在您转到该链接后,您将被重定向到 - http://www.promptfile.com/l/DA155F60EF-FC274DCD8D

我想获得第二个网址。 我在here

中找到了类似的问题

但是使用我从那里得到的代码

        $url= 'http://www.primewire.ag/external.php?url=aHR0cDovL3d3dy5wcm9tcHRmaWxlLmNvbS9sL0RBMTU1RjYwRUYtRkMyNzREQ0Q4RA';

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Must be set to true so that PHP follows any "Location:" header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $a = curl_exec($ch); // $a will contain all headers

        $url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); // This is what you need, it will return you the last effective URL

        // Uncomment to see all headers
        /*
        echo "<pre>";
        print_r($a);echo"<br>";
        echo "</pre>";
        */

        echo $url; // Voila

回显第一个URL而不是重定向的URL。 谢谢

2 个答案:

答案 0 :(得分:2)

服务器未重定向(响应为200而不是304)。

返回的HTML包含

<frameset rows="24,100%" frameborder="0">
   <frame src="frame_header.php?hello=&title=" scrolling="no" />
       <frame src="http://www.promptfile.com/l/DA155F60EF-FC274DCD8D" />

</frameset><noframes>http://www.promptfile.com/l/DA155F60EF-FC274DCD8D</noframes>

会触发HTML浏览器加载该页面。 curl不解析返回的HTML,只解析HTTP头,因为它是HTTP客户端,而不是实际的HTML浏览器。因此,实际上并没有请求第二个URL(您可以通过查看示例代码中实际返回的curl来验证),并且有效URL实际上是您要返回的URL。

答案 1 :(得分:1)

您的代码工作正常,但目标服务器不会将您重定向到任何地方。这是您对第一个卷曲请求的HTML回复:

<frameset rows="24,100%" frameborder="0">
   <frame src="frame_header.php?hello=&title=" scrolling="no" />
       <frame src="http://www.promptfile.com/l/DA155F60EF-FC274DCD8D" />

</frameset><noframes>http://www.promptfile.com/l/DA155F60EF-FC274DCD8D</noframes>
</html>

正如您所看到的,这不是重定向,而是一个加载最终页面的框架。关注重定向无法帮助您。