thinkphp 5 nginx 部署时,只跳转首页问题

在刚刚学习tp5时候,将项目部署好后发现无论如何写路由,最终页面总是跳转到首页,很是费解

通过查阅资料得知是path_info的问题

并且tp5中的文档已经给出解决方案

在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf中配置转发规则实现:

location/{// …..省略部分代码if(!-e $request_filename){rewrite^(.*)$/index.php?s=/$1last;break;}}

其实内部是转发到了ThinkPHP提供的兼容URL,利用这种方式,可以解决其他不支持PATHINFO的WEB服务器环境。

如果你的应用安装在二级目录,Nginx的伪静态方法设置如下,其中youdomain是所在的目录名称。

location/youdomain/{if(!-e $request_filename){rewrite^/youdomain/(.*)$/youdomain/index.php?s=/$1last;}}

原来的访问URL:

http://serverName/index.php/模块/控制器/操作/[参数名/参数值...]

设置后,我们可以采用下面的方式访问:

http://serverName/模块/控制器/操作/[参数名/参数值...]

如果你没有修改服务器的权限,可以在index.php入口文件做修改,这不是正确的做法,并且不一定成功,视服务器而定,只是在框架执行前补全$_SERVER['PATH_INFO']参数

$_SERVER['PATH_INFO']=$_SERVER['REQUEST_URI'];

还有一种方案就是在配置文件app.php文件中pathinfo_fetch 中增加REQUEST_URI

'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL','REQUEST_URI'],

你可能感兴趣的:(thinkphp 5 nginx 部署时,只跳转首页问题)