博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最完美解决Nginx部署ThinkPHP项目的办法
阅读量:5964 次
发布时间:2019-06-19

本文共 2008 字,大约阅读时间需要 6 分钟。

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

 

server {     ...        location / {            index  index.htm index.html index.php;            #访问路径的文件不存在则重写URL转交给ThinkPHP处理            if (!-e $request_filename) {               rewrite  ^/(.*)$  /index.php/$1  last;               break;            }        }        location ~ \.php/?.*$ {            root        /var/www/html/website;            fastcgi_pass   127.0.0.1:9000;            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 $1;                set $path_info $2;            }            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指令即可。

方法二会有不可预知的错误

try_files $uri /index.php$uri;这个地方要改成 try_files $uri /index.php/$uri;

   

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:9000;            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;        }    }

 

原文:https://blog.csdn.net/tinico/article/details/18033573

你可能感兴趣的文章
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
深入理解Java的接口和抽象类
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
<气场>读书笔记
查看>>