如何使用PHP获取网站的最终重定向的规范网址?

在链接缩减器和Ajax的日子里,可以有很多链接最终指向相同的内容.我想知道最好的方式是在PHP中获得网站的最终链接,希望可以使用图书馆.我无法在Google或GitHub上找到任何内容.

我已经看到这个例子代码,但它不处理像rel =“canonical”元标记或默认ssl端口的东西:http://w-shadow.com/blog/2008/07/05/how-to-get-redirect-url-in-php/

Facebook似乎处理得很好,您可以看到他们如何遵循301和rel =“规范”等.要查看Facebook处理方式的示例,请使用其Open Graph工具:

https://developers.facebook.com/tools/debug

并输入以下链接:

http://dlvr.it/xxb0W
https://twitter.com/#!/twitter/statuses/136946408275193856

有没有一个PHP库已经有这个预建的,它将检查这些头,解决301重定向,解析rel =“规范”,检测重定向循环,并正确抓住最好的结果URL使用?

作为替代,我可以使用可以使用的API,但是更喜欢在我自己的服务器上运行的API.

最佳答案
由于我没有找到真正做过我正在寻找的任何图书馆,我希望做的不仅仅是HTTP重定向,而是建立了一个完成目标并在麻省理工学院发布的图书馆执照.你可以在这里得到它:

https://github.com/mattwright/URLResolver.php

URLResolver.php是一个PHP类,它尝试将URL解析为最终的规范链接:

>跟踪在HTTP头中找到的301和302重定向
>按照开放图表网址< meta>在网页中找到的标签< head>
>遵循规范网址< link>在网页中找到的标签< head>
>如果内容类型不是HTML页面,则可以快速下载中止

我当然不是HTTP重定向规则的专家,所以如果有人有关于如何改进这个库的建议,那将是不胜感激的.我已经测试了成千上万的网址,似乎做得很好.我遵循Mario的建议,并在需要时使用PHP Simple HTML Parser库.

转载注明原文:如何使用PHP获取网站的最终重定向的规范网址? - 代码日志