php tp url model,nginx配置 支持thinkphp 的URL_MODEL=1模式

傻瓜原创,转载请表明出处,谢谢!--

最近一个用thinkphp框架做的项目,在centos+apache下开发完成后,想转移到nginx上搭建测试环境,

才发现nginx默认是不支持PATHINFO的,也就是说不支持TP设置URL_MODEL=1的情况,

这时候简单的方法,让nginx迅速搭建TP的方法是,设置URL_MODEL=3,即兼容模式。

这种情况下,有可能在你的项目中一些个别url依旧会失效,路径错误。

要彻底解决这个问题,可以用下面这个方法:

第一步:

设置URL_MODEL=1;

第二步:

设置nginx的配置文件

sudo vim /etc/nginx/sites-available/default  (这是在ubuntu+nginx环境下的路径):

location/{// …..省略部分代码

if(!-e $request_filename){

rewrite^(.*)$/index.php?s=$1last;

break;

}

}

上面的设置Nginx的伪静态方法, 其实内部是转发到了ThinkPHP提供的兼容模式的URL,利用这种方式,可以解决不支持PATHINFO的WEB服务器环境。

此处需要注意的是,如果你的ThinkPHP是安装在二级目录,Nginx的伪静态方法设置如下,其中youdomain是所在的目录名称。

location/youdomain/{

if(!-e $request_filename){

rewrite^/youdomain/(.*)$/youdomain/index.php?s=$1last;

}

}

有了上面的代码之后,再加上下面一段代码,location ~ .+.php($|/) {

set $script $uri;

set $path_info "/";

if ($uri ~ "^(.+.php)(/.+)") {

set $script $1;

set $path_info $2;

}

include fastcgi_params;

fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php?IF_REWRITE=1;

fastcgi_pass 127.0.0.1:9000;

fastcgi_param SCRIPT_FILENAME $document_root/$script;

fastcgi_param SCRIPT_NAME $script;

}

添加以上两段代码之后,nginx伪静态即配置完成,你可以在URL_MODEL=1的环境下使用thinkphp了,当然,别忘了重启你的nginx服务器呦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值