解决百度云虚拟主机BCH配置thinkphp 5 重写规则的问题

因为穷,买的是云虚拟主机,也就是以前所说的空间,所以很多配置受限。

自己做的小站(www.it100.site)用的是thinkphp 5 框架写的。因为thinkphp 5开始,将网站的入口文件改为public目录下,而非项目根目录下了,所以需要将虚拟主机的配置指向public目录。

但是百度云虚拟主机不支持修改域名绑定的目录,只能指向/webroot这个目录。所以我们需要想变通的办法。

首先我们在 /webroot 的目录下创建一个index.php,然后在这个文件中写入下面代码:

<?php
require './public/index.php';

配置后需要重载站点服务,这样才会生效。

这样我们就将thinkphp 5 中public目录下的入口文件作为根目录可以访问了。

然后我们看到首页可以正常访问了, 但是子页还是无法访问。这是因为我们还没有配置重写规则。

百度云虚拟主机现在支持主机定义一些server级别以下的nginx配置。我们可以在网站根目录下新建一个自定义的nginx配置文件。加上如下代码:

location / {
    #下面主要是解决在url地址中省略"index.php"时使用的规则
    if ( -f $request_filename) {
        break;
    }
    #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
    if ( !-e $request_filename) {
        #地址作为将参数rewrite到index.php上
        rewrite ^/(.*)$ /index.php/$1 last;
        break;
    }
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico|eot|otf|ttf|woff|woff2|svg|xml)$ {
   root /home/bae/app/public;
   expires 30d;
   access_log off;
}

重写规则配置好后,同样在百度后台重载站点服务后,即刻生效。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值