首先我使用的是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中文网(www.php.cn)!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版
中文版,非常好用

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。