本文目录
- PATHINFO模式和REWRITE模式哪个好
- TP3.2的路由模式有几种,有什么区别
- thinkphp怎么同时支持两种url
- nginx实现pathinfo有几种模式
- 请教,使用lnmp如何手动安装配置php
PATHINFO模式和REWRITE模式哪个好
pathinfo 模式是index.ph/index/index 这种url格式。也需要服务器支持pathinfo才行rewrite就是伪静态。把index.php隐藏掉兼容模式就是普通的模式加s=/参数/或者m=model&a=action这样的 各个开发框架都自己特定的格式。
TP3.2的路由模式有几种,有什么区别
注:每种模式后面括号内的0,1,2,3代表TP中对应的编号第一种:普 通 模式(0):缺点:URL地址中显示内容太多,不安全第二种:pathinfo 模式(1):默认模式优点:简化了URL地址第三种:rewrite 模式(2): 个人建议使用模式优点:简短,隐秘 (目录中不显示index.php)使用rewrite模式需要两步操作:
apache中开启rewrite模块,修改配置文件
将源码包中的.htaccess文件复制到项目根目录
第四种:兼 容 模式(3):
一般不使用该模式,只有当某些古老主机不支持pathinfo和rewrite模式,或者Apache没有开启pathinfo时使用。
thinkphp怎么同时支持两种url
支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式。
普通模式:也就是传统的GET传参方式来指定当前访问的模块和操作,例如:
***隐藏网址***
m参数表示模块,a操作表示操作(模块和操作的URL参数名称是可以配置的),后面的表示其他GET参数。
PATHINFO模式:是系统的默认URL模式,提供了最好的SEO支持,系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境。对应上面的URL模式,PATHINFO模式下面的URL访问地址是:
***隐藏网址***
PATHINFO地址的第一个参数表示模块,第二个参数表示操作。
PATHINFO模式下面,URL是可定制的,例如,通过下面的配置:
’URL_PATHINFO_DEPR’=》’-’, // 更改PATHINFO参数分隔符
我们还可以支持下面的URL访问:
***隐藏网址***
REWRITE模式:是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。
如果是Apache则需要在入口文件的同级添加.htaccess文件,内容如下:
《IfModule mod_rewrite.c》
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1
《/IfModule》
接下来,就可以用下面的URL地址访问了:
***隐藏网址***
兼容模式:是用于不支持PATHINFO的特殊环境,URL地址是:
***隐藏网址***
兼容模式配合Web服务器重写规则的定义,可以达到和REWRITE模式一样的URL效果。
nginx实现pathinfo有几种模式
鸟哥说的Rewrite重定向的方式指的是通过Nginx重定向,把PATH_INFO通过Query String的方式传给PHP。
例如,我们请求/user/1通过重定向规则,改为/index.php?path_info=/user/1。
这种方式需要PHP脚本内通过收集Query String来分析PATH_INFO,需要做一定的兼容适配。
而鸟哥介绍的第二种,是让PHP去拆解PATH_INFO信息。
例如,我们请求/index.php/user/1,PHP可以自动拆解脚本之后的路径,作为PATH_INFO,这里就是/user/1。
鸟哥介绍,由于PHP在拆解时可能出现一定的安全问题,所以还是不建议这种方法。
最后鸟哥介绍了另外一种方法,总体上来说还是从/index.php/user/1拆解出/user/1的方法,只不过这次拆解的过程是由Nginx来完成的,这种方法在接收请求的Nginx上来完成,相比较前两种在PHP中完成拆解的方法,这种方法由于可以使用的信息更多更直接,所以效果更好。
But,But,通常来说我们也不会以/index.php/user/1这种形式展示URL,而是希望隐藏程序的入口,也就是以/user/1来展示。所以说,这个过程我们仍然需要通过Nginx的Rewrite来完成隐藏程序入口到重定向到程序入口脚本的过程。通常在网络上看到的PHP+Nginx的隐藏入口配置,都是Rewrite配合最后一种拆解PATH_INFO方法来完成的。
所以说鸟哥的提法存在一定的问题,不能把第一种拆解PATH_INFO的方法单纯的与Nginx的Rewrite画等号。
请教,使用lnmp如何手动安装配置php
写在前面的话: ThinkPHP的四种URL模式:0(普通模式);1(PATHINFO模式);2(REWRITE模式);3(兼容模式) nginx需要PATHINFO模式,但需要更改nginx配置文件让其支持PATHINFO模式。 系统环境: 系统:CentOS-6.4-x86_64 web服务器:nginx1.2.7 PHP版本:...