虛擬主機如何配置thinkphp5專案上線
tp5.0預設的應用入口檔案位於public/index.php
,內容如下:
1.將public下的入口檔案index.php移到根目錄,修改如下
<?php
// [ 應用入口檔案 ]
// 定義應用目錄
define('APP_PATH', __DIR__ . './application/');
// 載入框架引導檔案
require __DIR__ . './thinkphp/start.php';
2.同時將public/目錄下的檔案
.htaccess 隨index.php移到根目錄
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
安全性!
因為你將入口檔案移到了跟目錄,框架下的所有目錄已經暴露了。
如果apache伺服器沒處理。那就可以直接訪問重要檔案。
不管他有沒有做處理,直接跟目錄下的每個目錄都來個.htaccess。然後寫入deny from all。
1 |
|
好了。
解決:css、js、圖片等靜態資源404了。
因為移出了public目錄,所以檔案找不到了。
需要替換全部目錄路徑。
如果你是使用__PUBLIC__,__STATIC__,__CSS__,__JS__等來寫
那麼恭喜你,直接在配置改view_replace_str就行了
1 2 3 4 5 6 |
|
如果不是,那就全部檢視檔案,所有用到用到路徑的地方全盤替換目錄
1 |
|
特別容易忽略的地方是css裡面的background路徑,和自定義上傳路徑,請注意。
Linux下的檔案路徑大小寫敏感。
例如你的:
控制器方法名是:public function userCenter()
對應檢視檔案是:userCenter.html,
那麼你訪問的時候發現檢視檔案找不到,報錯了。
解決辦法:
方法1、改模板檔名全為小寫;
方法2、$this->fetch('模板檔名');
方法3、$this->fetch(__FUNCTION__),但要求檢視檔名要跟方法名一樣。
測試下網站所有功能,ok沒問題,部署配置完畢。
3.關於安全問題。和引入靜態資源js,css等。參考下方
thinkphp5整合H-ui後臺(一)開發環境搭建與公共模板設定 https://blog.csdn.net/timbrown1119/article/details/79716081
網路參考文件:http://www.php.cn/php-weizijiaocheng-382873.html
https://www.jb51.net/article/131121.htm
2.官方參考文件-關於線上生產環境部署 https://www.kancloud.cn/manual/thinkphp5/129746