因爲窮,買的是雲虛擬主機,也就是以前所說的空間,所以很多配置受限。
自己做的小站(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;
}
重寫規則配置好後,同樣在百度後臺重載站點服務後,即刻生效。