TP框架中的URL默认模式即是PathInfo模式。这个模式很强大,每当你访问一个网站必然带有一长串参数,但是太长又显得不太友好。...然而PathInfo模式功能就是将这一长串缩短简化,让这个路径变得更加友好的显示。 传统的访问路径是这样子的: http://www.example.com/index.php?...两者相比较很容易就得出结论:PathInfo模式下的访问路径显示更加友好! 然而在这篇文章中我所要讲述的就是如何搭建好这种友好的访问路径。...以MVC模式进行搭建,所以就少不接触模型呀控制器呀行为之类的了。之前一直用ThinkPHP,感觉ThinkPHP中的URL中的默认模式PATHINFO很强大。...好啦扯远啦,言归正传,我所制作的PATHINFO功能上和ThinkPHP是一致的,至于里面的深层原理效率问题什么的,是否和TP中的PATHINFO一样就不太清楚啦,毕竟还没有去研究TP原码,这里就按照我自己的思路来写
首先,什么是pathinfo模式呢?...m=topic&a=detail&tid=82 转为 伪静态模式后为http://www.cxzaixian.com/index.php/topic/detail/tid/82.html。...当配置支持pathinfo后,在php应用程序中,通过_SERVER['PATH_INFO']变量获取pathinfo值为/topic/detail/tid/82.html。...但是我们要说的nginx服务器默认是不支持pathinfo模式访问。...模式访问,可以去深入了解一下它是怎么支持pathinfo格式的。
几乎所有的框架(ThinkPHP,Zend Framework,CI,Yii,laravel等)都会使用URL重写或者pathinfo模式,使URL看起来更美观,比如可以隐藏掉入口文件,并且有利于搜索引擎优化...,其实让Nginx支持pathinfo或者重写也不难,首先在php.ini中设置cgi.fix_pathinfo=1 再就是添加配置文件(新版nginx) 内容如下: #pathinfo 支持开始 以上配置信息根据实际情况配置...结束 } #重写模式开始 location / { if (!...rewrite ^(.*)$ /index.php/$1 last; } } #重写模式结束...} 这样Nginx就支持pathinfo了,当然您需要根据您的服务器进行具体的配置,可能会略有变化,切忌机械的照搬照抄。
小伙伴在使用ThinkPHP搭建自己或者公司项目的时候,url模式设置成为兼容模式,也就是URL_MODEL的值为3的时候是不是也遇到过Lnmp的环境不支持pathinfo模式,当然了PHP+Nginx...下面就教大家怎么讲我们的各种云服务器下lnmp的环境支持pathinfo,说到这里是不是有的小伙伴可能不太明白pathinfo模式是什么,下面小编就先给大家上个个小例子: www.xxx.com/index.php.../Admin/Manager/Login 这样的url形式就是pathinfo的模式,这样的模式更加利于百度小蜘蛛的识别,也就是更加优于SEO。...在/usr/local/nginx/conf下创建pathinfo.conf(如果已经存在请先备份然后修改) fastcgi_split_path_info ^((?...命令:/root/lnmp restart 新版的重启命令为:lnmprestart 小伙伴按照上面的步骤一步一步的配置就可以了,希望这篇文章能帮助那些还在苦于linux下配置pathinfo的小伙伴
.+\.php($|/) { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi_pathinfo.conf...fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; } } 其中fcgi_pathinfo.conf
URL模式 URL_MODEL设置 普通模式 0 PATHINFO模式 1 REWRITE模式 2 兼容模式 3 如果你整个应用下面的模块都是采用统一的...模式 PATHINFO模式是系统的默认URL模式,提供了最好的SEO支持,系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境。...对应上面的URL模式,PATHINFO模式下面的URL访问地址是: http://localhost/index.php/home/user/login/var/value/ PATHINFO地址的前三个参数分别表示模块...兼容模式 兼容模式是用于不支持PATHINFO的特殊环境,URL地址是: http://localhost/?...s=/home/user/login/var/value 可以更改兼容模式变量的名称定义,例如: ‘VAR_PATHINFO’ => ‘pathinfo’ PATHINFO参数分隔符对兼容模式依然有效
距离上一次发布的《制作类似ThinkPHP框架中的PATHINFO模式功能》(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.html)已经过去好多天了...上一篇文章已经实现了PATHINFO模式的URL,即我们访问MVC模式搭建的站点时,只需要在域名后面加上(/module/controller/action)即可,很智能化。
isset( $_SERVER['PATH_INFO'] ) ){ $pathinfo = 'default'; }else{ $pathinfo = explode('/', $_SERVER...['PATH_INFO']); } if( is_array($pathinfo) AND !...empty($pathinfo) ){ $page = $pathinfo[1]; }else{ $page = 'a.php'; } require "$page.php"; ?...> 参考资料: 1、PHP Parse Pathinfo 2、CPAN PathInfo
nginx的高性能优势明显,自己又很喜欢pathinfo类型的url。 apache下mod_rewirte有很好的实现,nginx就捉鸡了。...网上有一些中文的文章教你怎么配置nginx来支持pathinfo(当然很多是互相抄袭的) 英文的相对少很多 这里贴下我的配置: 首先是location / 的块里面,对于不存在的请求文件名,全部转发给...-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; break; } } 此外,还需要几行字来把pathinfo...提取出来,写在location ~ \.php$ 块里面,注意为了支持pathinfo 这个块匹配的正则需要改为 location ~ \.php($|/) ,这是正则相关知识自行查阅 location...输出显示pathinfo信息被附加到好多个变量里面,有点乱,其实主要参考是request_uri和path_info,去别在于前者带有queryString参数,后者没有 ["DOCUMENT_URI"
使用自动加载和解析url的参数,实现调用到不同的控制器,实现了pathinfo模式和普通的url模式 文件结构: |--Controller |--Index |--Index.php |-...=array_filter(explode("/", $_SERVER['PATH_INFO'])); for($i=1;$i<=count($pathinfo);$i++){...$key=isset($pathinfo[$i]) ?...$pathinfo[$i] : ''; $value=isset($pathinfo[$i+1]) ?...$pathinfo[$i+1] :""; switch ($i) { case 1:
pathinfo — 返回文件路径的信息 mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME...| PATHINFO_EXTENSION | PATHINFO_FILENAME ] ) pathinfo() 返回一个关联数组包含有 path的信息。...options 如果指定了,将会返回指定元素;它们包括:PATHINFO_DIRNAME,PATHINFO_BASENAME和 PATHINFO_EXTENSION 或 PATHINFO_FILENAME...php $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php'); echo $path_parts['dirname'], "\n"; echo $
续上一篇《让nginx支持pathinfo》 原文的配置在我本机(Win,Nginx1.2.4)还算可以,但是有一个bug,就是如果url里面包含trailing slash(最后的斜杠/)的话,PATH_INFO...折腾了很久之后还是有各种问题,其实很多PHP框架(如Yii、CI、ThinkPHP)、流行的应用系统(Wordpress、Joomla)等都支持另外一种兼容模式的pathinfo,就是通过其他方法获取path_info
前言: 首先,什么是pathinfo模式呢? ...m=topic&a=detail&tid=82 转为 伪静态模式后为http://www.cxzaixian.com/index.php/topic/detail/tid/82.html。 ...apache服务器本身是支持pathinfo的,通过简单修改几项配置即可。...当配置支持pathinfo后,在php应用程序中,通过_SERVER['PATH_INFO']变量获取pathinfo值为/topic/detail/tid/82.html。...但是我们要说的nginx服务器默认是不支持pathinfo模式访问。
只要修改vhost下面的配置文件 enable-php.conf 为 enable-php-pathinfo.conf 再引用 typecho.conf 伪静态文件,完美解决。...1.enable-php.conf 文件,添加pathinfo2.conf引入 location ~ [^/]\.php(/|$) { try_files...php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; include pathinfo2....conf; } 2.上传pathinfo2.conf文件(和原来默认版本不一样) set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name
所以本文将介绍 LNMP 配置NGINX 支持THINKPHP PATHINFO模式 。...,这个需要支持pathinfo,Apache默认支持,而Nginx不支持。...2.修改nginx对应配置文件 LNMP上各个版本pathinfo各个版本的设置基本一样: lnmp v1.1上,修改对应虚拟主机的配置文件 去掉#include pathinfo.conf前面的#,把...lnmp restart 4.设置url_mode =2 // -----------URL伪静态后缀设置---------- 'URL_MODEL'=>'2', // 0 (普通模式); 1 (PATHINFO...模式); 2 (REWRITE 模式); 3 (兼容模式) 默认为PATHINFO 模式 ---- 注:有些文章提到nginx不支持pathinfo,需要在config文件中设置。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112491.html原文链接:https://javaforall.cn
在nginx下是不支持pathinfo的,但是apache支持pathinfo。 pathinfo是什么? 首先我们在nginx的html目录下新键1.php文件,打印$_SERVER <?...SERVER); 尝试在地址栏输入如下参数 结果返回404 同样的代码在apache下测试 没有报错 并且页面多了PATH_INFO的字段 值为 url地址后面的参数 a/b/c 这就是pathinfo...一些框架中他的地址栏格式为 index.php/Home/Index/goods/1....这种格式在apache中可以正常解析,但在nginx中是不支持的,也就是你的框架项目直接拿到nginx上是跑不起的...fastcgi_param PATH_INFO $1; include fastcgi_params; } 通过正则反向引用将.php后面的参数传递给pathinfo...浏览器测试传入参数 1.php/a/b 页面生成PATH_INFO字段 此时解决Nginx不支持pathinfo的问题。
URL模式 在营销推广的过程中,域名的网站后面的长短是多人很注意的,越短越好,但是Thinkphp域名的参数非常长,普通模式就更长了,如何改短呢,ThinkPHP支持的URL模式有四种:普通模式、PATHINFO...设置为1 为PATHINFO模式 最常见模式,PATHINFO模式是系统的默认URL模式,提供了最好的SEO支持PATHINFO地址的前三个参数分别表示模块/控制器/操作。...省略了index.php; 是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。...是用于不支持PATHINFO的特殊环境访问地址是: http://www.huthon.com/?...要使用路由功能,前提是你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情况下不支持路由功能),并且在应用(或者模块)配置文件Conf/config.php中开启路由 'URL_ROUTER_ON
Patinfo又可以分三种:普通模式和自动识别模式以及兼容模式 普通模式:设置配置文件加上‘URL_PATHINFO_MODEL’=>’1’ 普通模式访问:index.php/m/模块名/a/动作名 这样...这个时候可以这样传值:index.php/m/模块名/属性/值1/属性2/值2 这样在模块中的方法可以用$_GET[‘属性‘]得到值1,$_GET[‘属性2′]得到值2 智能模式:需要配置‘URL_PATHINFO_MODEL...’=>’2’ 这个时候就不需要加上index.php/模块名/动作名 而传值就和普通方式一样的办法进行传值 说明:有的可能配置了默认分隔符,那么这里的传值就需要变化了 比如你配置了’URL_PATHINFO_DEPR...’=>’-‘,那么你传值就要用–分开传值了 注意:URL_PATHINFO_MODEL这个配置在3.0里面已经去掉了 4、TP模式分类 0普通模式、1Pathinfo模式(默认模式)、2Rewrite模式...、3兼容模式 服务器不支持pathinfo可以使用兼容模式 5、Rewrite模式需要服务器开启rewrite模块,然后建立htaccess文件 6、入口文件 所有的加载都是相对于入口文件定位的,统一的入口文件方便了权限的管理以及
领取专属 10元无门槛券
手把手带您无忧上云