登录  /  注册
首页 > php教程 > PHP开发 > 正文
Nginx配置CodeIgniter项目(一)
黄舟
发布: 2016-12-20 12:01:36
原创
1541人浏览过

首先我使用的是Nginx的URL rewrite的方法。

开启enable_query_strings

开启方法很简单:在application/config/config.php中设置:

$config['enable_query_strings'] = FALSE;

在CI开发的项目中用的PATH_INFO模式,要在Nginx配置中重写URL,那么就要在CI的配置文件中开启字符串查询,对比URL形式的变化:

URL:www.xxx.com/user/profile 字符串查询模式:www.xxx.com/index.php?c=user&m=profile

把前台和后台的URL按照一定规则重写之后,测试都OK。但是在分页的时候出点问题,因为在开启字符串查询之后生成的分页URL地址有变化:

未开启:/user/list/10 开启字符串查询之后:/user/list&per_page=10

之所以会出现下面错误的URL是我在生成分页的时候,base_url格式没有变化,那么从/user/list变成对应的/index.php?c=user&m=list之后就会变成下面情况:

第二页:www.xxx.com/index.php?c=user&m=list&per_page=10 第三页:www.xxx.com/index.php?c=user&m=list&per_page=20 第四页:www.xxx.com/index.php?c=user&m=list&per_page=30

而我设置的pagesize一直都是10,这样的话per_page应该一直是10的。去看一下Pagination这个类的代码,发现per_page只是query_string_segment的默认值,我误以为是per_page这个参数了。

分页兼容rewrite

总结一下分页这块如果要兼容rewrite的写法,那么就在生成分页的时候改变一下base_url参数:

方法一:/index.php?c=user&m=list,结果是:/index.php?c=user&m=list&per_page=10 方法二:/user/list?,结果是:/user/list?&per_page=10

分页的SQL就是:

$this->db->limit($pagesize, $this->input->get('per_page'));

为了保持URL一致性还是使用第二种方法,后面也可以随便加个没用的参数让结果变成/user/list?x=xxx&per_page=10。

讨论

关于分页。当然也可以不使用CI自带的分页,或者把Pagination.php改一改。

如果是作为method的一个参数传递的时候,正常URL如:/user/arg1/arg2/arg3,那么在rewrite的时候就没法传递过去了(至少我还没找到解决的方法),要想解决除非把参数变成GET方式传递,这就要改动程序了,所以不推荐。

而且使用rewrite就要针对不同形式的URL,如果项目很复杂的话就成了累赘,所以就寻求另外一种方法:让Nginx把PATH_INFO传递给fastcgi,见下一篇文章吧。

以上就是Nginx配置CodeIgniter项目(一)的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!


相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 技术文章
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2023 //m.sbmmt.com/ All Rights Reserved | 苏州跃动光标网络科技有限公司 | 苏ICP备2020058653号-1

 | 本站CDN由 数掘科技 提供

登录PHP中文网,和优秀的人一起学习!
全站2000+教程免费学