php获取301跳转URL简单实例

代码如下:

/**
 * get_redirect_url()
 * Gets the address that the provided URL redirects to,
 * or FALSE if there's no redirect.
 *
 * @param string $url
 * @return string
 */
function get_redirect_url($url){
    $redirect_url = null;

$url_parts = @parse_url($url);
    if (!$url_parts) return false;
    if (!isset($url_parts['host'])) return false; //can't process relative URLs
    if (!isset($url_parts['path'])) $url_parts['path'] = '/';

$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
    if (!$sock) return false;

$request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1\r\n";
    $request .= 'Host: ' . $url_parts['host'] . "\r\n";
    $request .= "Connection: Close\r\n\r\n";
    fwrite($sock, $request);
    $response = '';
    while(!feof($sock)) $response .= fread($sock, 8192);
    fclose($sock);
    if (preg_match('/^Location: (.+?)$/m', $response, $matches)){
        if ( substr($matches[1], 0, 1) == "/" )
            return $url_parts['scheme'] . "://" . $url_parts['host'] . trim($matches[1]);
        else
            return trim($matches[1]);

} else {
        return false;
    }

}
/**
 * get_all_redirects()
 * Follows and collects all redirects, in order, for the given URL.
 *
 * @param string $url
 * @return array
 */
function get_all_redirects($url){
    $redirects = array();
    while ($newurl = get_redirect_url($url)){
        if (in_array($newurl, $redirects)){
            break;
        }
        $redirects[] = $newurl;
        $url = $newurl;
    }
    return $redirects;
}

php实现用socket获取301跳转地址,可以提取跳转过程中的url

时间: 2013-12-14

asp,asp.net,php,jsp下的301转向代码

使用.htaccess文件来进行301重定向,请见我的另外一篇文章<301重定向,域名更换后跳转到新域名> . 如果空间不支持.htaccess文件,那么我们还可以通过php/asp代码来进行301重定向. 为了将搜索引擎的记录更新到现在的域名上面,做了几个301重定向的东东,给大家分享一下. asp 301转向代码 在 index.asp 或 default.asp 的最顶部加入以下几行: 复制代码 代码如下: <% Response.Status="301 Moved Pe

php 实现301重定向跳转实例代码

在php中301重定向实现方法很简单我们只要简单的利用header发送301状态代码,然后再用header进行跳转,效果与apache,iis,nginx都是一样的效果哦. 一:更推荐这种方法,因为它可以把http://www.jb51.net原来所有的url都转到http://jb51.net新的地址上 代码如下 <?php $the_host = $_SERVER['HTTP_HOST']; $request_uri = isset($_SERVER['REQUEST_URI']) ? $_

301重定向代码合集(iis,asp,php,asp.net,apache)

1.IIS下301设置 Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择"资源的永久重定向". 在IIS中,也可以通过安装ISAPI Rewrite组件来实现如Apache中mod_rewrite的功能,详见ISAPI Rewrite 3下载及常用301规则. 2.ASP下的301重定向代码 <%@ Language=VBScript %> <% Response.Status="301 Mo

asp.net php asp jsp 301重定向的代码(集合)

1.Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可以了,一般来说,在本地无法创建.htaccess的时候可以先创建一个txt格式文件,上传到根目录的时候再重命名为".htaccess"就可以了.网上很多如何进行 301重定向的教程,无论是整站重定向还是单页重定向.下面就以我的www.jb51.net为例 1.1 无www域名转移到www域名 复制代码 代码如下: RewriteEngine on

解析网站301重定向的实现方法,包括iis,apache,asp,php的方法

页面永久性移走(301重定向)是一种非常重要的"自动转向"技术. 首先,给一个工具,是来检测服务器头信息的,简单来说就是看看你的站点的301是否成功了.不要小看这个301,如果被做成了302什么的,你的站可能就要让你欢喜让你忧了. 检测地址:http://www.seoconsultants.com/tools/headers.asp#results 301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法.当网站的域名发生变更后,搜索引擎

关于php curl获取301或302转向的网址问题的解决方法

在使用php的curl获取远程文件,代码如下: 复制代码 代码如下: <? $ghurl = isset($_GET['id']) ? $_GET['id']:'http://www.baidu.com/'; // php 获取 function getContents($url){ $header = array("Referer: http://www.baidu.com/"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,

PHP header()函数使用详细(301、404等错误设置)

如果您刚刚开始学习PHP,可能有许多函数需要研究,今天我们就来学习一下PHP Header()的使用方法,更多的使用说明,请您参照PHP中文手册,下面是关于header函数的详细使用说明 header实现404无法找到页面 复制代码 代码如下: Header("HTTP/1.1 404 Not Found"); 针对apache配置中的ErrorDocument 404 /404.php功能,把nginx配置中的 复制代码 代码如下: error_page 404 /404.php;

php 301转向实现代码

301转向定义 301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址. 其它常见的状态码还包括,200表示一切正常,404网页找不到,302暂时转向,等等. 网站做转向的方法 网址转向方法主要包括:301转向,302转向,JavaScript转向,PHP/ASP/CGI转向,META REFRESH网页META刷新,等.302转向可能会有URL规范化问题.其它方

php用header函数实现301跳转代码实例

PHP 301跳转的小代码 复制代码 代码如下: <?php    $the_host = $_SERVER['HTTP_HOST']; $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; if($the_host !== 'www.jb51.net') {     //echo $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];    header('HT

各种语言、服务器301跳转代码全集

301跳转通常用在网站换域名和为了保持链接统一性所用的.比如你原来的域名www.a.com现在换成www.b.com,用了301跳转后,访问www.a.com/about.html就会自动变成www.b.com/about.html.下面摘抄一下设置301的代码吧,方便一下新手们: 301跳转代码全集(ASP|PHP|JSP|.NET) 1.IIS下301设置 Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择"资源的永久重定向&q

微信小程序和H5页面间相互跳转代码实例

这篇文章主要介绍了微信小程序和H5页面间相互跳转代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.微信小程序跳转小程序 wx.navigateToMiniProgram // 小程序跳转 /* * appId string 是 要打开的小程序 appId * path string 否 打开的页面路径,如果为空则打开首页 * extraData object 否 需要传递给目标小程序的数据,目标小程序可在 App.onLaunch,A

PHP下利用header()函数设置浏览器缓存的代码

这涉及到4种头标类型: Last-Modified(最后修改时间); Expires(有效期限); Pragma(编译指示): Cache-Control(缓存控制); 前三个头标属于HTTP1.0标准.头标Last-Modified使用UTC日期时间值.如果缓存系统发现Last-Modified值比页面缓存版本的更接 近当前时间,他就知道应该使用来自服务器的新版本. Expires 表明了缓存版本何时应该过期(格林威治标准时间).把它设置为一个以前的时间就会强制使用服务器上的页面. Pragm

JavaScript中调用函数的4种方式代码实例

1:方法调用模式 var myObj = {//对象字面量 param1: 1, param2: 2, sum: function (){ //this关键字只带当前的对象 return this.result = this.param1 + this.param2; } } myObj.sum(); //=>3 2:函数调用模式 var add = function(a, b){ return a + b; } //函数调用模式 add(1,2); //=>3 还可以 function ad

PHP中header函数的用法及其注意事项详解

void header ( string $string [, bool $replace = true [, int $http_response_code ]] ) : Send a raw HTTP header 下面有一些使用header的几种用法: 1.使用header函数进行跳转页面: header('Location:'.$url); 其中$url就是将要跳转的url了. 这种用法的注意事项有以下几点: •Location和":"之间不能有空格,否则会出现错误(注释:我刚

Php header()函数语法及使用代码

语法: 复制代码 代码如下: Void header(string $string[,bool $replace=true [, int $http_response_code) 向客户端发送原始的HTTP报头需注意:Header函数必须在任何实际的输出前调用,无论是一般的html标签.文件中空行,或者来自php.就是在这个函数之前不能有任何形式的输出.参数说明: 参数 描述string 必需.规定要发送的报头字符串.replace 可选.指示该报头是否替换之前的报头,或添加第二个报头.默认是

PHP header()函数常用方法总结

//定义编码 复制代码 代码如下: header( 'Content-Type:text/html;charset=utf-8 '); //Atom 复制代码 代码如下: header('Content-type: application/atom+xml'); //CSS 复制代码 代码如下: header('Content-type: text/css'); //Javascript 复制代码 代码如下: header('Content-type: text/javascript'); //