php 获取301跳转后真实的url

在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/

?>

php 获取301跳转后真实的url

时间: 2024-10-14 16:01:13

php 获取301跳转后真实的url的相关文章

获取经过跳转后的url地址

粗略一算,不写code已经好几个月了. 昨日受兄弟所托,为他写了一个小小的程序. 程序功能: 自动获取跳转后的Url地址 如下图所示: (newUrl.txt为转换后的地址信息...) 实现过程: 每读一行数据,就new了一个webbrowser,然后指定其url,接着,在文档加载完毕之后,获取起url地址(则为最终地址). 优点:没有...用来滥竽充数的.. 缺点: 1.webbrowser很吃内存.我只是随便测试200条数据,就吃了我几G内存. 2.用的是winform,本人的系统为win8

爬虫:获取多次跳转后的页面url

<?php $url = "xxxx"; $xx = get_headers($url,true); var_dump($xx); ?>

nginx 301跳转https后post请求失效问题解决

app本地请求是http端口,后来升级https强制301跳转,设置如下 server { listen 80; server name www.XXX.com; rewrite ^/(.*)$ https://www.XXX.com/$1 permanent; } 问题描述及原因 强制把http请求跳转到https,结果发现App有部分的功能不能使用,因为App一共设置了4种请求方式,分别是GET,POST,DELETE和OPTIONS方式,设置301跳转后所有的请求方法都变成了GET方式,导

301跳转:IIS服务器网站整站301永久重定向设置方法(阿里云)

欢迎来到重庆SEO俱乐部:搜索引擎优化学习交流QQ群224306761. 承接:seo优化.网站建设.论坛搭建.博客制作.全网营销 博主可接:百度百家.今日头条.一点资讯等软文发布,有需要请联系PE! 点击与站长互动 301跳转:IIS服务器网站整站301永久重定向设置方法(阿里云) 首页 > 主机 > 正文 Panoeade / 2016-04-24 / 1975 views / 0 Replies / 悦读模式 / 百度已收录 欢迎投稿SEO/SEM及互联网相关文章:百度百家.今日头条.一

IIS服务器下301跳转是怎么样实现的?

301跳转的用法很多,对于一名SEO来说,301转向是必须掌握的本领,但是对于301转向而言,许多人都并不清楚,301跳转以后,需不需要对原网站进行优化,再次提及一边301跳转的定义. 所谓301跳转,对于搜索引擎而言,便是,对搜索引擎发出信息,告诉搜索引擎:“此url地址已经永久的进行跳转到了‘XXX’url地址.”而对于用户而言,301跳转后的网站,在用户使用的时候,输入旧的地址,会自动跳转到新的地址,只是这个过程及其迅速,不可察觉而已. 各种程序.服务器下301跳转的实现: 一: IIS服

如何编程方式设置301跳转?

我们知道IIS的301设置非常的简单,不懂得可以去百度下. 编程方式使用下面的代码 答案: /// <summary> /// 设置301跳转 /// </summary> /// <param name="Url">要跳转的URL</param> public static void SetURL301(string Url) { System.Web.HttpContext.Current.Response.Clear(); Syst

php 获取优酷视频的真实地址(2014.6月新算法)

上个礼拜发现优酷改版了,各种过滤优酷广告的插件都失效了,于是我百度了一下(谷歌也不能用了)发现优酷改算法了,在ckplayer论坛发现有人在6月25号发了个php 的优酷代理文件,下载下来发现,能用但只能获取mp4格式的视频地址,而且php还加密了,没办法查看源码,后来通过微盾解密发现其中的源码,结合以前自己写的一个优酷视频解析类.... 感谢    3shi大大 具体分析请见 3shi大大的文章  优酷视频真实地址解析  (当然现在不能用了,主要看分析) ps.  新算法是从别人那里解密出来的

phpcms9添加301跳转

在做301跳转时遇到了"错误 310 (net::ERR_TOO_MANY_REDIRECTS):重定向过多."的问题,小编在这里把处理方法简单给大家写出来希望可以帮助到大家,另外小编也把phpcms v9 设置301跳转的两种方面分别给大家介绍一下. phpcms v9 301跳转设置方法一: 仅支持Apache服务器设置 在根目录下找到.htaccess文件,并将以下代码写入进去,保存上传即设置成功,如下图 代码如下,直接复制后,更改域名即可 RewriteEngine on Re

转:HTTP 301 跳转和302跳转的区别

301和302 Http状态有啥区别?301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved), 302redirect: 302 代表暂时性转移(Temporarily Moved ), 当然 Http 状态 200 标示没有任何问题发生.  这两种转移在使用的时候有啥好处或者问题?301 重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301