解決百度雲虛擬主機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;
}

重寫規則配置好後,同樣在百度後臺重載站點服務後,即刻生效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章