设为首页 收藏本站
查看: 1005|回复: 0

[经验分享] PHP中的$_SERVER['PATH_INFO']

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-24 14:23:41 | 显示全部楼层 |阅读模式
PHP中的全局变量$_SERVER['PATH_INFO']是一个很有用的参数,众多的CMS系统在美化自己的URL的时候,都用到了这个参数。
对于下面这个网址:
http://www.test.com/index.php/foo/bar.html?c=index&m=search
我们可以得到 $_SERVER['PATH_INFO'] = ‘/foo/bar.html’,而此时 $_SERVER['QUERY_STRING'] = 'c=index&m=search';
通 常,我们最初开始PHP程序编写的时候,都会使用诸如:  http://www.test.com/index.php?c=search&m=main  这样的URL,这种URL不仅看起来非常奇怪,而且对于搜索引擎也是非常不友好的。很多搜索引擎收录的时候,都会忽略Query  String之后的内容,google虽然不会忽略Query String,但是对于其他不含Query String的页面,会给于比较高的PR值。
下面是一段解析PATH_INFO的非常简单的代码:


<?php
if( !isset( $_SERVER['PATH_INFO'] ) ){
    $pathinfo = 'default';
}else{
    $pathinfo =  explode('/', $_SERVER['PATH_INFO']);
}
if( is_array($pathinfo) && !empty($pathinfo)  ){
    $page = $pathinfo[1];
}else{
    $page = 'a.php';
}
require "$page.php";
?>
参考资料:
1、PHP Parse Pathinfo            
2、CPAN PathInfo      
  
  
DSC0000.gif
  
  

  如果无法显示$_SERVER['PATH_INFO']
apache下需要开启 :



  Options Indexes FollowSymLinks
  AcceptPathInfo On  
  

  
  
  

PHP中$_SERVER['PATH_INFO']作用解析  
  
  

  最近学习伪静态时看到$_SERVER['REQUEST_URI']和$_SERVER['PATH_INFO']这两个函数,我学习从来是不用即不理(顺便提醒以下各位正在开始学习的同学,这个习惯很不好),所以很长时间总也没学好。这次也一样,看到这两个之后完全不知道什么意思,网上查了半天也没看到个所以然,看代码的时候知道大概意思,决定自己动手测试功能。。。。。
  说说我的测试方法及结果:
  首先建了一个页面a.php。代码如下:



<?php
    echo $_SERVER['REQUEST_URI']
?>  本地测试地址:http://localhost/a.php 得到结果:/a.php
  测试地址二:http://localhost/a.php?id=123 得到结果:/a.php?id=123
  测试地址三:http://localhost/a.php/123.html 得到结果:/a.php/123.html
  即$_SERVER['REQUEST_URI']基本得到的是地址中/后的所有内容
  将a.php代码改为如下:



<?php
    echo $_SERVER['PATH_INFO']
?>  本地测试地址:http://localhost/a.php 得不到任何结果,很郁闷,不懂什么意思;
  测试地址二:http://localhost/a.php?id=123 同样得不到任何结果,更郁闷,因为不懂,所以确实不晓得这个函数什么意思,感觉挺不舒服的。正当准备放弃继续baidu时,无意中做了下面的测试,挺幸运
  测试地址三:http://localhost/a.php/123.html 得到结果/123.html
  再在后面加东西,测试地址四:http://localhost/a.php/123.html?id=2222 结果为:/123.html
  什么意思自己看就应该明白了。是不是还有我没测试到的作用,不得而知了。希望对各位有用。
  
  
  
  
  
  摘自:http://hi.baidu.com/laosu1983/blog/item/49ec6b095542e8386159f310.html
  
  
  
  
  


  
  

$_SERVER["PATH_INFO"] 没有结果!
  
  
  
包含由客户端提供的、跟在真实脚本名称之后 并且在查询语句(query string)之前 的路径信息,如果存在的话。例如,如果当前脚本是通过 URL http://www.example.com/php/path_info.php/some/stuff?foo=bar 被访问,那么 $_SERVER['PATH_INFO'] 将包含 /some/stuff 。
这是php手册上介绍的,如果使用重写,将上面路径中的path_info.php去掉,即路径改写成http://www.example.com/php/some/stuff?foo=bar,$_SERVER['PATH_INFO']也是没值的。$_SERVER["PATH_INFO"]具体用来做什么,我也不是很清楚。
  
  
  摘自:http://bbs.houdunwang.com/thread-12376-1-1.html
  
  
  
  
  
  
  
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103568-1-1.html 上篇帖子: Discuz! X2.5(PHP) 集合 CAS 单点登录 下篇帖子: “无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装”最快的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表