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

2015-01-24信息快讯网

ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 'URL_MODEL' => 2 即可。在Apache下只需要开启mod_rewrite模块就可以正常访问了,但是Nginx中默认是不支持PATHINFO的,所以我们需要修改nginx.conf文件。

网上搜了很多方法都不奏效,研究了一天,发现通过以下的配置可以完美支持 '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简单开启gzip压缩方法(zlib.output_compression)
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
php检测图片木马多进制编程实践
谈谈关于php的优点与缺点
如何用PHP实现插入排序?
apache和php之间协同工作的配置经验分享
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
简单实现限定phpmyadmin访问ip的方法
Apache中php.ini的设置方法
浅谈apache和nginx的rewrite的区别
phpadmin如何导入导出大数据文件及php.ini参数修改
set_include_path和get_include_path使用及注意事项
nginx+php-fpm配置文件的组织结构介绍
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
PHP中数字检测is_numeric与ctype_digit的区别介绍
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
ThinkPHP与PHPExcel冲突解决方法
php Smarty初体验二 获取配置信息
php中Smarty模板初体验
PHP 防注入函数(格式化数据)
PHP中将数组转成XML格式的实现代码
PHP程序开发范例学习之表单 获取文本框的值
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
linux下使用ThinkPHP需要注意大小写导致的问题
linux下为php添加curl扩展的方法
php.ini中date.timezone设置分析
php XPath对XML文件查找及修改实现代码
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
PHP include_path设置技巧分享
apache+php完美解决301重定向的两种方法
Apache2中实现多网站域名绑定的实现方法
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()'d code error
php中神奇的fastcgi_finish_request
The specified CGI application misbehaved by not returning a complete set of HTTP headers
php expects parameter 1 to be resource, array given 错误
完美实现GIF动画缩略图的php代码
php下尝试使用GraphicsMagick的缩略图功能
©2014-2024 dbsqp.com