thinkphp在低版本Nginx 下支持PATHINFO的方法分享

yipeiwu_com6年前PHP代码库

最近在用thinkphp做一个项目,基本完成后部署到nginx服务器上才发觉nginx是不支持pathinfo的那么我们如何来处理呢。

Nginx环境

在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf(在/usr/local/nginx/conf/nginx.conf或者通过find / | grep nginx.conf来查找位置)中配置转发规则实现:在nginx配置文件中添加:

location / { 
if (!-e $request_filename) {
   rewrite ^(.*)$ /index.php?s=$1 last;
   break;
 }
} 

其实内部是转发到了ThinkPHP提供的兼容模式的URL,利用这种方式,可以解决其他不支持PATHINFO的WEB服务器环境。
如果你的ThinkPHP安装在二级目录,Nginx的伪静态方法设置如下,其中youdomain是所在的目录名称。

location /youdomain/ {
 if (!-e $request_filename){
  rewrite ^/youdomain/(.*)$ /youdomain/index.php?s=$1 last;
 }
} 

如:

location /thinkphp/ {
 if (!-e $request_filename){
    rewrite ^/thinkphp/(.*)$ /thinkphp/index.php?s=$1 last;
 }
}

语法:rewrite regex replacement flag  (last     相当于apache里面的[L]标记,表示rewrite。)

相关文章

php实现的一段简单概率相关代码

本文实例讲述了php实现的一段简单概率相关代码。分享给大家供大家参考,具体如下: <?php for($i=1;$i<100000;$i++){ $x=mt_ra...

探寻PHP脚本不报错的原因

那么如果PHP脚本不报语法错,会是什么原因呢: 1. 一般的集成环境,默认会开启错误报告; 但在linux系统中,使用软件包安装的就不一定了,   此时可以查看PHP配置文件,打开错误报...

PHP中多维数组的foreach遍历示例

复制代码 代码如下: <?php //声明一个三维数组 $info=array( "user"=>array( array(1,"zhangsan",20,"nan"), a...

PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)

复制代码 代码如下: <? /** * 操纵文件类 * * 例子: * FileUtil::createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹...

PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例

本文实例讲述了PHP使用 Imagick 扩展实现图片合成,圆角处理功能。分享给大家供大家参考,具体如下: 需求:为用户生成特定的二维码 ,拉取用户的微信头像 和特定的背景图合成一张用户...