PHP检测url重定向的最终地址

原创 2016年05月31日 22:26:48

引言

客户需求, 需要判断一个url跳转后的url是否是目标url, 于是有此文, 惯例先贴代码.

代码

/**
 * 递归检测url重定向地址, 直到重定向到rule所指地址
 * 返回该地址
 *
 * @param string $url 待检测的地址
 * @param string $rule 匹配的地址
 * @return mixed
 */
function redirect($url, $rule = 'https://www.google.com/')
{
    $header = get_headers($url, 1);
    //print_r($header);
    if (strpos($header[0], '301') !== false || strpos($header[0], '302') !== false) {
        // 检测到跳转
        if (array_key_exists('Set-Cookie', $header)) {
            // 检测到cookie, 进行设置
            $cookies = $header['Set-Cookie'];
            foreach ($cookies as $k => $v) {
                header('Set-Cookie: ' . $v);
            }
        }
        if (array_key_exists('Location', $header)) {
            $url = $header['Location'];
            if (is_array($url)) {
                foreach ($url as $k => $v) {
                    if (strpos($v, $rule) !== false) {
                        // 跳转地址与$rule匹配, 返回该地址
                        return $v;
                    } else {
                        // 不匹配则访问一次中转网址
                        file_get_contents($v);
                    }
                }
            } else {
                if (strpos($url, $rule) !== false) {
                    // 跳转地址与$rule匹配, 返回该地址
                    return $url;
                }
            }
        }
    }
    return false;
}

小结

核心函数get_headers()
其余的就是常规的字符串判断函数.

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

相关文章推荐

apache通过.htaccess(rewrite)判断手机电脑跳转-手机用户重定向到手机版

自动判断、重定向的办法也有几种: 使用网站构建的程序(例如PHP)来判断、重定向; 使用服务器上的Web服务(例如Apache)来判断、重定向。 在Apache中设置重定向有两个办法: 在...
  • qikexun
  • qikexun
  • 2016年05月18日 11:13
  • 3732

PHP页面跳转与页面重定向详解

页面重定向一定会有页面跳转,页面跳转不一定会有页面重定向,也就是说页面重定向真包含于页面跳转,页面重定向是页面跳转的充分不必要条件。...
  • yhb241
  • yhb241
  • 2015年10月16日 16:10
  • 11721

PHP网站实现地址URL重定向

网站建设中,通常会用到网站地址URL的重定向,这样的好处是有利于你网站的SEO优化,也就是让你的网站实现伪静态,下面简单介绍一下实现的两种方法:   1、在Apache配置文件中设置重定向 ...

PHP获取重定向URL的几种方法

有时候我们会在开发中,经常会遇到有URL 301或 302重定向的情况,这时候我们可能需要获取重定向之后的url,下面我们介绍一下几种获取重定向url的方法: 1、用get_headers函数 ...
  • zimuxin
  • zimuxin
  • 2016年08月17日 10:58
  • 1502

linux内核实现url重定向

  • 2014年03月17日 18:15
  • 323KB
  • 下载

URL重定向

  • 2013年05月03日 20:54
  • 199KB
  • 下载

URL重定向,referer,referrer和安全

URL重定向,referer,referrer和安全,

URL重定向,动态加载二级域名

  • 2011年12月08日 14:14
  • 205KB
  • 下载

重定向OWA URL

  • 2009年08月31日 15:38
  • 224KB
  • 下载

【LoadRunner】Http协议下单点登录的URL重定向问题

现在越来越多的项目都是多系统部署在多个环境但归属在一个项目,需要进行单点登录。 有一次协助同事做性能测试时,就遇到了单点登录的问题,脚本回放一直无法成功。 场景内容是:单点登录之后...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP检测url重定向的最终地址
举报原因:
原因补充:

(最多只允许输入30个字)