让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享


Posted in PHP onAugust 08, 2011

网上搜了很多方法都不奏效,研究了一天,发现通过以下的配置可以完美支持 'URL_MODEL' => 2 的情况了

location /project/ { 
index index.php; 
if (!-e $request_filename) { 
rewrite ^/project/(.*)$ /project/index.php/$1 last; 
break; 
} 
} location ~ .+\.php($|/) { 
set $script $uri; 
set $path_info "/"; 
if ($uri ~ "^(.+\.php)(/.+)") { 
set $script $1; 
set $path_info $2; 
} 
fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php?IF_REWRITE=1; 
include /APMServ/nginx/conf/fastcgi_params; 
fastcgi_param PATH_INFO $path_info; 
fastcgi_param SCRIPT_FILENAME $document_root/$script; 
fastcgi_param SCRIPT_NAME $script; 
}

这里先把project下的请求都转发到index.php来处理,亦即ThinkPHP的单一入口文件;然后把对php文件的请求交给fastcgi来处理,并且添加对PATH_INFO的支持。
重启Nginx以后,http://localhost/project/Index/insert, http://localhost/project/index.php/Index/delete 这样的URL都可以正确访问了。
还有一个地方需要注意的是,Nginx配置文件里 if 和后面的括号之间要有一个空格,不然会报unknown directive错误。
PHP 相关文章推荐
php生成缩略图的类代码
Oct 02 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 PHP
PHP中模拟处理HTTP PUT请求的例子
Jul 22 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
PHP封装的简单连接MongoDB类示例
Feb 13 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 PHP
PHP7 其他语言层面的修改
Mar 09 PHP
php Smarty初体验二 获取配置信息
Aug 08 #PHP
php中Smarty模板初体验
Aug 08 #PHP
PHP 防注入函数(格式化数据)
Aug 08 #PHP
PHP中将数组转成XML格式的实现代码
Aug 08 #PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 #PHP
php记录日志的实现代码
Aug 08 #PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 #PHP
You might like
Get或Post提交值的非法数据处理
2006/10/09 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
PHP 批量删除数据的方法分析
2009/10/30 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
python如何生成网页验证码
2018/07/28 Python
详解python做UI界面的方法
2019/02/27 Python
基于django传递数据到后端的例子
2019/08/16 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
Python模块 _winreg操作注册表
2020/02/05 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
Django websocket原理及功能实现代码
2020/11/14 Python
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
中职应届生会计求职信
2013/10/23 职场文书
村级换届选举方案
2014/05/10 职场文书
农业项目合作意向书
2015/05/08 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
Python提取PDF指定内容并生成新文件
2021/06/09 Python