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
相关推荐
-
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
-
关于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 实现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']) ? $_
-
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重定向的实现方法,包括iis,apache,asp,php的方法
页面永久性移走(301重定向)是一种非常重要的"自动转向"技术. 首先,给一个工具,是来检测服务器头信息的,简单来说就是看看你的站点的301是否成功了.不要小看这个301,如果被做成了302什么的,你的站可能就要让你欢喜让你忧了. 检测地址:http://www.seoconsultants.com/tools/headers.asp#results 301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法.当网站的域名发生变更后,搜索引擎
-
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
-
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跳转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
-
JS控制静态页面之间传递参数获取参数并应用的简单实例
在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a页面已经打开,b页面无论是否打开.在a页面需要获取到b页面的一些元素甚至变量,以便于应用到a页面. 注意:不涉及跨域问题. 想了很久,终于想到了解决方案. 第一个问题,我们可以利用html页面锚点的特性,将参数通过url传递给b页面 这是a页面代码: <button>跳转设置</button
-
用HTML/JS/PHP方式实现页面延时跳转的简单实例
WEB开发中经常会遇到页面跳转或延时跳转的需求,掌握各种页面跳转方式非常必要. 以下是我总结有用HTML/JS/PHP三类方式实现跳转的方法,例子皆为三秒后跳转到index.php页面. 1,HTML方法: 在HEAD中添加<meta>标签 <meta http-equiv="refresh" content="3;url='index.php'" > 2,JS控制跳转方法 A.Location直接加链接方式 <script type=
-
Android 获取传感器列表整理及简单实例
Android 获取传感器列表整理及简单实例 Android 4.4 (API等级19)支持以下传感器: TYPE_ACCELEROMETER 加速度传感器,单位是m/s2,测量应用于设备X.Y.Z轴上的加速度 传感器类型值(Sensor Type):1 (0x00000001) TYPE_AMBIENT_TEMPERATURE 温度传感器,单位是℃ 传感器类型值(Sensor Type): 13 (0x0000000d) TYPE_GAME_ROTATION_VECTOR 游戏动作传感器,不收
-
js 获取站点应用名的简单实例
一直用EL表达式${pageContext.request.contextPath}来传递应用名,在用到JS中时,很麻烦,虽然也可以用,但是加大了代码复杂度,因此这里推荐用JS获取应用名 function getContextPath() { var contextPath = document.location.pathname; var index =contextPath.substr(1).indexOf("/"); //这个地方可能有问题,要根据具体项目适当修改 contex
-
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例 <input id="txt" class="text1" type="text" /> <script src="js/jquery-1.7.1.min.js"></script> <script type="text/javascript"> $(function () { $("inp
-
JS获取当前页面名称的简单实例
JS获取当前页面名称的简单实例 // 取当前页面名称(不带后缀名) function pageName() { var a = location.href; var b = a.split("/"); var c = b.slice(b.length-1, b.length).toString(String).split("."); return c.slice(0, 1); } //取当前页面名称(带后缀名) function pageName() { var s
-
JS获取当前日期和时间的简单实例
复制代码 代码如下: <script>var myDate = new Date(); myDate.getYear(); //获取当前年份(2位)//alert(myDate.getYear()) //2009 myDate.getFullYear(); //获取完整的年份(4位,1970-????)//alert(myDate.getFullYear()); 2009 myDate.getMonth(); //获取当前月份(0-11,0代表1月)
-
C#获取局域网MAC地址的简单实例
效果: 说明:获取本局域网的MAC地址(非本机的MAC地址) 代码: 复制代码 代码如下: /// <summary> /// 获取网卡物理地址 /// </summary> /// <returns></returns> public static string getMAC() { string madAddr = null; Man
-
在jmeter的beanshell中用java获取系统当前时间的简单实例
复制代码 代码如下: import java.util.*; int y,m,d,h,mi,s; Calendar cal=Calendar.getInstance(); y=cal.get(Calendar.YEAR); m=cal.get(Calendar.MONTH); d=cal.get(Calendar.DATE); h=cal.get(Calendar.HOUR_OF_DAY); mi=cal.get(Calendar.MINUTE);
随机推荐
- C++读取注册表的实现方法
- ckeditor syntaxhighlighter代码高亮插件配置分享
- 解决无法配置SQL2005问题
- Fireworks 基础知识小结
- 简单的java读取文件示例分享
- ecshop 批量上传(加入自定义属性)
- Python单例模式的两种实现方法
- XDOWNPAGE ASP版本 分页类
- php将print_r处理后的数据还原为原始数组的解决方法
- nginx服务器配置解决ajax的跨域问题
- js 进度条实现代码
- js添加删除行和双击变文本框的脚本
- 滚动效果
- 比较完整简洁的Flash处理XML文档数据教程 上篇第1/3页
- PHP生成静态HTML页面最简单方法示例
- js实现前面自动补全位数的方法
- 详解Linux常用命令的用法(二)————文本编辑器命令vi/vim
- 详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
- Django框架之登录后自定义跳转页面的实现方法
- PHP保留两位小数的几种方法