php5.4 index 404,ThinkPHP上传到服务器出现404,未找到index.php模板等问题

问题:代码在本地写好之后,传到服务器,首页能正常加载,但无法加载任何控制器,无法加载其他页面。

nginx 的错误代码为 404 not found。

造成这个错误的原因,可能是有的低版本的nginx不支持path_info(总感觉这个原因有点说不过去,还请高手指出)。解决方法就是重写URL,隐藏  URL中的 index.php。

1.开启ThinkPHP路由模式

在ThinkPHP的配置文件conf.php中加入

‘URL_MODEL’ => 2,

默认情况下 URL_MODEL 为 1,默认情况下使用PATHINFO模式。0为普通模式,采用传统的URL传参模式。2为rewrite模式,重写URL时必须设置为rewrite。3为兼容模式,是传统传参和PATHINFO的结合。

2.在nginx配置文件中重写URL

参考TinkPHP手册,将下面的代码加到 xxxxx.conf 中。xxxx.conf是你的项目的nginx配置文件。

location / {

// …..省略部分代码

if (!-e $request_filename) {

rewrite  ^(.*)$  /index.php?s=$1  last;

break;

}

}

如果项目文件是在二级目录的话,就得改一下路径。代码如下,yourdomin是二级目录的名字

location /youdomin/ {

// …..省略部分代码

if (!-e $request_filename) {

rewrite  ^/yourdomin/(.*)$  /index.php?s=$1  last;

}

}

然后重启nginx。不出意外问题就解决了。

3.something else

除了可以参考手册进行URL重写,也可以自己写规则隐藏index.php。但还是首先推荐参考手册,因为自己写的话,如果是新手可能会出现一些问题。隐藏index.php的代码比如:

location / {

//...省略部分代码

if (-f $request_filename/index.php){

rewrite (.*) $1/index.php;

}

if (!-f $request_filename){

rewrite (.*) /index.php;

}

}

提示:千万不能只rewrite而不设置路由,我之前就是因为没有设置路白白浪费了很多时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值