我真的很佩服Yii2高級模板將後端和前端分割成單獨的目錄,保持它的結構化,但我沒有得到的是如何將它部署到服務器。在這一天結束時,我將不得不將其上傳到apache服務器,並且前端將不得不在http://domain.com/上訪問,而後端將不得不在http://domain.com/admin/之類的東西上。服務器基於apache。Yii2高級模板後端和前端在同一個域上
這是如何實現的?
謝謝!
我真的很佩服Yii2高級模板將後端和前端分割成單獨的目錄,保持它的結構化,但我沒有得到的是如何將它部署到服務器。在這一天結束時,我將不得不將其上傳到apache服務器,並且前端將不得不在http://domain.com/上訪問,而後端將不得不在http://domain.com/admin/之類的東西上。服務器基於apache。Yii2高級模板後端和前端在同一個域上
這是如何實現的?
謝謝!
要訪問後端應用程序在前臺可以使用符號鏈接:
在Linux命令shell
ln -s project_dir/backend/web project_dir/frontend/web/admin
或Windows
mklink /J project_dir\frontend\web\admin project_dir\backend\web
只需更換 'PROJECT_DIR'與您的項目的路徑
在您的網站的根,您將需要放置一個.htaccess文件。如果URL包含「admin」,您將重定向到後端的物理和真實路徑。否則,使用物理和真實路徑前端。另外,您可以通過在前端和後端的目錄中放置另一個.htaccess來從URL中刪除「/ web /」。所以根htaccess將重定向到前端或後端目錄,然後將傳遞給網頁。這是一種菊花鏈方法,但它確實有效。
您也可以使用符號鏈接或設置虛擬主機(虛擬主機)。老實說,虛幻方法將是最好的情況。但是,這也可以完成工作。除非你有很多流量,否則它不應該影響性能。
根網站的.htaccess的:
RewriteEngine on
RewriteRule ^admin/(.*)$ backend/$1 [L]
RewriteRule ^(.*)$ frontend/$1 [L]
我用的第一個規則來實現site.com/admin - >映射到site.com/backend。然後後端有htaccess的映射到網頁。我剛剛爲你添加了第二條規則,我沒有測試過。所以如果url路徑是「admin」,傳遞給後端,否則一切都會傳遞給前端。
兩者 「前端」 和 「後端」 目錄內部htaccess的(隱藏的URL的Web):
Options -Indexes
RewriteEngine on
RewriteRule ^(.*)$ web/$1 [L]
兩者 「前端/網絡」 和 「後端/網」 目錄內部的.htaccess (每漂亮網址):
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
在後端/配置/ main.php和前端/配置/ main.php,補充一點:
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
// ...
],
],
],
這將啓用漂亮的網址。
我會把整個項目放在「public_html」目錄之上,或者你的公共web根目錄。這樣,沒有任何文件可以訪問。然後物理複製你想要的網頁目錄的內容。即:將「frontend/web」的內容複製到您網站的根目錄中。然後創建一個名爲「admin」的文件夾,並在其中放置「backend/web」的內容。然後編輯index.php文件將路徑調整爲yii。
你應該看看Heroku,CloudControl和OpenShift等雲端主機。我個人喜歡OpenShift。然後,您使用「git push」上傳您的更改,而不是搞亂老派的FTP。
將所有文件複製到站點的根文件夾。 創建admin文件夾位於網站的根目錄。 的前端/網絡站點根目錄和後端的內容/網頁將內容複製到siteroot /管理文件夾。 並改變根/ index.php文件的內容:
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/frontend/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/common/config/main.php'),
require(__DIR__ . '/common/config/main-local.php'),
require(__DIR__ . '/frontend/config/main.php'),
require(__DIR__ . '/frontend/config/main-local.php')
);
(new yii\web\Application($config))->run();
,並更改根的內容/管理/ index.php文件到:
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../common/config/bootstrap.php');
require(__DIR__ . '/../backend/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../common/config/main.php'),
require(__DIR__ . '/../common/config/main-local.php'),
require(__DIR__ . '/../backend/config/main.php'),
require(__DIR__ . '/../backend/config/main-local.php')
);
$application = new yii\web\Application($config);
$application->run();
你將在共享主機或專用服務器上上傳項目? – ahb360 2014-11-05 19:33:54
你會想在apache中創建2個不同的虛擬主機。一個將domain.com重定向到前端/ web文件夾,另一個重定向domain.com/admin(或admin.domain.com)到後端/ web / – 2014-11-07 17:59:36