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

引入

在使用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;
	    if ($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问题解决!!! 奋斗 奋斗 奋斗


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红尘炼炼心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值