免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3700 | 回复: 3
打印 上一主题 下一主题

让Nginx支持ThinkPHP的URL重写和PATHINFO [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-08 13:06 |只看该作者 |倒序浏览
转:潺莪

让Nginx支持ThinkPHP的URL重写和PATHINFO



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

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

  1. 1 location /project/ {
  2. 2     index  index.php;
  3. 3     if (!-e $request_filename) {  
  4. 4         rewrite  ^/project/(.*)$  /project/index.php/$1  last;
  5. 5         break;
  6. 6     }
  7. 7 }
  8. 8  
  9. 9 location ~ .+\.php($|/) {
  10. 10     set $script    $uri;
  11. 11     set $path_info  "/";
  12. 12     if ($uri ~ "^(.+\.php)(/.+)") {
  13. 13         set $script     $1;
  14. 14         set $path_info  $2;
  15. 15      }
  16. 16         
  17. 17     fastcgi_pass 127.0.0.1:9000;
  18. 18     fastcgi_index  index.php?IF_REWRITE=1;
  19. 19     include /APMServ/nginx/conf/fastcgi_params;
  20. 20     fastcgi_param PATH_INFO $path_info;
  21. 21     fastcgi_param SCRIPT_FILENAME  $document_root/$script;
  22. 22     fastcgi_param SCRIPT_NAME $script;
  23. 23 }
复制代码
这里先把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错误。

论坛徽章:
0
2 [报告]
发表于 2011-08-15 15:09 |只看该作者
nginx 支持pathinfo 只要改一处 就OK了。

论坛徽章:
0
3 [报告]
发表于 2012-03-26 21:07 |只看该作者
回复 2# huanghua581


    只改一个地方改哪里呢,能把你的配置发上来看一下吗,我也遇到要用nginx使用thinkphp的问题

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
4 [报告]
发表于 2012-03-31 22:20 |只看该作者
nginx有个参数可以用,直接到官网上查就行了:

fastcgi_split_path_info
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP