zoukankan      html  css  js  c++  java
  • 解决百度云虚拟主机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;
    }

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

  • 相关阅读:
    13.numpy线性代数和绘图
    12-numpy矩阵
    11-numpy视图与副本
    10-numpy排序搜索
    day12 异常 模块 单例
    day11面向对象 多态 静态方法 (三)
    day 10 面向对象(=)
    day9 面向对象
    day8 文件
    day7 地址 名片管理系统
  • 原文地址:https://www.cnblogs.com/it100fen/p/13026894.html
Copyright © 2011-2022 走看看