我真的很佩服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