php 获取301跳转后真实的url

瘦欲@ 提交于 2020-01-07 09:06:00

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

在php采集中经常遇到有URL 301重定向的情况,如果出现了这样的情况,有可能出现造成未知的结果,因为主机名不一样了。我们的采集中主机名不能用301重定向前的URL,要用重定向之后的URL。

我在以下PHP的例子中介绍下怎么获取301定向后真实的URL,目前我知道有两种方法

1、用get_headers函数;2、用cURL

现介绍利用get_headers() 函数获取http头 php 自带的get_headers()取得服务器响应一个 HTTP 请求所发送的所有标头。 获取301状态肯定没问题。

301定向的例子: google.com 会301跳转至 www.google.com 再www.google.com 会302跳转至 www.google.com.hk

我写了个php函数 其php函数作用: 输入 google.com 得到 www.google.com.hk 输入 www.google.com 得到 www.google.com.hk 输入 www.google.com.hk 得到 www.google.com.hk

<?php /* @param str $url 查询 $return str 定向后的url的真实url */ function getrealurl($url){ $header = get_headers($url,1); if (strpos($header[0],'301') || strpos($header[0],'302')) { if(is_array($header['Location'])) { return $header['Location'][count($header['Location'])-1]; }else{ return $header['Location']; } }else { return $url; } } $url = 'http://google.com'; $url = getrealurl($url); echo '真实的url为:'.$url; //真实的url为:http://www.google.com.hk/ ?>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!