From : http://www.htmltec.com/archives/302

网上通用解决方法的配置如下:

server {
location / {
index index.htm index.html index.php;
#访问路径的文件不存在则重写URL转交给ThinkPHP处理
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$ last;
break;
}
}
location ~ \.php/?.*$ {
root /var/www/html/website;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
#加载Nginx默认"服务器环境变量"配置
include fastcgi.conf; #设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量
set $fastcgi_script_name2 $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
set $fastcgi_script_name2 $;
set $path_info $;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name2;
fastcgi_param SCRIPT_NAME $fastcgi_script_name2;
}
}

其实应该使用更简单的方法,fastcgi模块自带了一个fastcgi_split_path_info指令专门用来解决此类问题的,该指令会根据给定的正则表达式来分隔URL,从而提取出脚本名和path info信息,使用这个指令可以避免使用if语句,配置更简单。
另外判断文件是否存在也有更简单的方法,使用try_files指令即可。

server {
location / {
index index.htm index.html index.php;
#如果文件不存在则尝试TP解析
try_files $uri /index.php$uri;
}
location ~ .+\.php($|/) {
root /var/www/html/website;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php; #设置PATH_INFO,注意fastcgi_split_path_info已经自动改写了fastcgi_script_name变量,
#后面不需要再改写SCRIPT_FILENAME,SCRIPT_NAME环境变量,所以必须在加载fastcgi.conf之前设置
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info; #加载Nginx默认"服务器环境变量"配置
include fastcgi.conf;
}
}

最新文章

  1. mysql重复记录的查询删除方法
  2. ld can't link with a main executable file for architecture armv7
  3. JS判断对象是否存在的方法
  4. maven 环境搭建 Myeclipse配置
  5. 使用JPA TOOLS从数据库生成Entity文件
  6. hdu 5510 Bazinga KMP+尺取法
  7. IllegalArgumentException 介绍
  8. BigDecimal-解决商业计算
  9. kubernetes 安装备注
  10. Git 密钥对处理
  11. MTK6261之Catcher工具的Database Path
  12. SpringBoot2.1整合finereport10(帆软报表)
  13. asp.net core 依赖注入实现全过程粗略剖析(2)
  14. U盘安装Ubuntu 14.04 LTS
  15. apache的bin目录下的apxs有什么作用? PHP模块加载运行方式
  16. 栈的实现与操作(C语言实现)
  17. Android开发训练之第五章第四节——Syncing to the Cloud
  18. Laravel 查询包括软删除的记录
  19. Noip前的大抱佛脚----奇技淫巧
  20. Bootstrap-CL:列表组

热门文章

  1. MarginTop 为何影响父元素的 MarginTop(转)
  2. 001.DHCP简介
  3. JAVA 画图板实现(基本画图功能+界面UI)一、界面实现
  4. DML和DQL 总结
  5. 解决:虚拟机能ping通主机,主机ping不通虚拟机
  6. linux安装project lemon测评机
  7. Java 操纵XML之读取XML文件
  8. Gym 100646 Problem E: Su-Su-Sudoku 水题
  9. LocalCache
  10. MikroTik RouterOS使用U盘安装提示FATAL ERROR: no CD-ROM found Press ENTER to reboot的问题解决