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许可证) 举报

相关文章推荐

php的URL重定向函数

// URL重定向 function redirect($url, $time=0, $msg='') { //多行URL地址支持 $url = str_replace(array("...

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

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

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

PHP网站实现地址URL重定向

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

PHP网站实现地址URL重定向

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

URL地址重写

URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。举个例子来说,如果通过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它可以被重写成 ...

BIEE 11g 地址重定向

BIEE 11.5地址重定向 突然觉得自己很2的,对weblogic不熟,纠结了好些天. 需求:安装完成后,BIEE开发登入界面是:http://ip:port/analytics 现在想要输入...

ASP.NET的URL地址重写

一、下载 Mircosoft URLRewriter.dll 二、将URLRewriter.dll 添加引用至Web层 如图: 三、配置Web.config,在web.config 的节点...

url重定向

Xml代码  安装      1. 下载jar包, 并加入到WEB-INF/lib下   2. 在WEB-INF/web.xml中增加下面的配置   filt...

url 重定向

URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术。常用在把一串很长的网站网址,转成较短的网址。因为当要传播某网站的网...

Apache的URL地址重写(RewriteCond与RewriteRule)

Apache的URL地址重写 http://hi.baidu.com/sonan/blog/item/c408963d89468208bba16716.html 第一种方法:Apache环境中如果要将...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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