zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

在nginx中配置pathinfo模式支持thinkphp的URL重写

配置模式Nginx重写 支持 url thinkphp pathinfo
2023-06-13 09:15:25 时间

最近一个项目中使用了ThinkPHP做为开发框架,URL上我们使用了PATHINFO模式,但是Nginx默认是不支持PATHINFO的,需要进行手动配置才可以,于是我们按照了以下方法进行了Nginx的PATHINFO支持配置:
修改nginx.conf,找到server中的location~.php${},修改为location~.php{},并在其中增加以下内容:

复制代码代码如下:

set$path_info"";
set$real_script_name$fastcgi_script_name;
if($fastcgi_script_name~"^(.+?.php)(/.+)$"){
   set$real_script_name$1;
   set$path_info$2;
}
fastcgi_paramSCRIPT_FILENAME$document_root$real_script_name;
fastcgi_paramSCRIPT_NAME$real_script_name;
fastcgi_paramPATH_INFO$path_info;

不过无论我们如何测试,都发现PATHINFO模式总是不能正确运行,就算运行后,{:U}方法也总是出错,打印$_SERVER后发现PHP_SELF总是不对。
但是依然PATHINFO不能正确正常工作,于是我们确定是ThinkPHP的配置问题,发现其实是ThinkPHP的_PHP_FILE的问题,在入口文件index.php中加入配置define("_PHP_FILE_",$_SERVER["SCRIPT_NAME"]);,问题解决。
如果$_SERVER["SCRIPT_NAME"]路径也不对,请先替换为正确的文件路径。