Php 同一域上的Yii2高级模板后端和前端
我真的很佩服Yi2AdvancedTemplate将后端和前端划分为单独的目录,使其结构化,但我不明白的是,应该如何将其部署到服务器上。在一天结束时,我必须将其上传到apache服务器上,前端必须在上访问,后端必须在上。服务器基于apache 如何实现这一目标Php 同一域上的Yii2高级模板后端和前端,php,apache,yii,yii2,Php,Apache,Yii,Yii2,我真的很佩服Yi2AdvancedTemplate将后端和前端划分为单独的目录,使其结构化,但我不明白的是,应该如何将其部署到服务器上。在一天结束时,我必须将其上传到apache服务器上,前端必须在上访问,后端必须在上。服务器基于apache 如何实现这一目标 谢谢大家! 要访问前端的后端应用程序,可以使用符号链接: 在linux命令shell中 ln -s project_dir/backend/web project_dir/frontend/web/admin 或者在窗户上 mklink
谢谢大家! 要访问前端的后端应用程序,可以使用符号链接: 在linux命令shell中
ln -s project_dir/backend/web project_dir/frontend/web/admin
或者在窗户上
mklink /J project_dir\frontend\web\admin project_dir\backend\web
只需在站点根目录中将“project_dir”替换为项目的路径,您需要放置一个.htaccess文件。如果URL包含“admin”,您将重定向到后端的实际路径。否则,使用到前端的物理和真实路径。此外,您还可以通过将另一个.htaccess放置在前端和后端的目录中,从URL中删除“/web/”。所以根htaccess将重定向到前端或后端目录,然后这些目录将传递到web。这是一种菊花链方法,但确实有效 您还可以使用符号链接或设置虚拟主机(vhost)。老实说,vhost方法将是最好的情况。然而,这也完成了工作。除非你有很多流量,否则它不会对性能造成太大的影响 站点的根目录。htaccess:
RewriteEngine on
RewriteRule ^admin/(.*)$ backend/$1 [L]
RewriteRule ^(.*)$ frontend/$1 [L]
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
// ...
],
],
],
我使用第一条规则来实现site.com/admin->映射到site.com/backend。。然后后端具有映射到web的htaccess。我刚刚为你添加了第二条规则,我还没有测试过。所以,若url路径为“admin”,则传递到后端,否则所有其他内容都传递到前端
.htaccess位于“前端”和“后端”目录中(从url隐藏web):
.htaccess位于“前端/web”和“后端/web”目录中(根据漂亮的url):
在backend/config/main.php和frontend/config/main.php中,添加以下内容:
RewriteEngine on
RewriteRule ^admin/(.*)$ backend/$1 [L]
RewriteRule ^(.*)$ frontend/$1 [L]
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
// ...
],
],
],
这将启用漂亮的URL
我会将您的整个项目放在“public_html”目录或任何您的公共web根目录之上。这样,所有文件都不可访问。然后将web目录的内容物理复制到需要的位置。ie:将“前端/web”的内容复制到网站的根目录中。然后创建一个名为“admin”的文件夹,并将“backend/web”的内容放在其中。然后编辑index.php文件以调整yii的路径
您应该真正了解诸如Heroku、CloudControl和OpenShift之类的云主机。我个人喜欢OpenShift。然后,您可以使用“git push”上传更改,而不是使用老式的FTP。将所有文件复制到站点的根文件夹。 在站点的根目录中创建admin文件夹。 将前端/web的内容复制到站点根目录,将后端/web的内容复制到站点根目录/admin文件夹。 并将root/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();
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();
并将root/admin/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();
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();
您要将项目上载到共享主机还是专用服务器上?您需要在apache中创建两个不同的虚拟主机。一个将domain.com重定向到前端/web文件夹,另一个将domain.com/admin(或admin.domain.com)重定向到后端/web文件夹/