您的位置:首页 > 运维架构 > Nginx

Nginx下TP3.2页面访问404问题

2017-11-13 15:49 1041 查看

引入

在使用Thinkphp的时候,项目在本地可以正常使用;但迁移到nginx后,会出现页面只能访问首页,其它页面出现404错误的问题。

这是因为TP默认采用的是pathinfo的URL访问模式(TP的URL访问模式可在手册中了解),而Nginx默认是没有开启pathinfo模式的,PHP默认也没有开启pathinfo的配置,所以访问时会出现错误。

pathinfo模式是怎样的模式呢?

例如:http://localhost/goodsLevel/index.php/Home/Index/index.html
上面的url就是采用pathinfo模式,特点如下:
1、路径中携带了入口文件index.php
2、在入口文件后跟随路径。格式一般为index.php/模块/控制器/方法/参数等

404页面出现原由

了解pathinfo模式后,我们就知道为什么Nginx环境下访问TP页面时出现404页面了。
因为按照常理来说,index.php后面跟随着路径,那么index.php就相当于一个文件夹了。但实际上又不存在index.php这个文件夹,所以如果没有开启pathinfo模式,那么这个路径解析就会报找不到文件。而只有在开启pathinfo模式之后,服务器才会去执行index.php这个文件。

Nginx配置phpinfo

1--配置php.ini,使php支持pathinfo



2--配置nginx.conf

在Nginx配置nginx.conf中的server加入以下配置
server
{
...
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1;
}
}
location ~ \.php {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi_params;

set $real_script_name $fastcgi_script_name;
i
afce
f ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
}
nginx.conf加入以上配置后,lnmp restart重启即可。
Nginx下TP3.2页面访问404问题解决!!!






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: