Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 同一域上的Yii2高级模板后端和前端_Php_Apache_Yii_Yii2 - Fatal编程技术网

Php 同一域上的Yii2高级模板后端和前端

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

我真的很佩服Yi2AdvancedTemplate将后端和前端划分为单独的目录,使其结构化,但我不明白的是,应该如何将其部署到服务器上。在一天结束时,我必须将其上传到apache服务器上,前端必须在上访问,后端必须在上。服务器基于apache

如何实现这一目标


谢谢大家!

要访问前端的后端应用程序,可以使用符号链接:

在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文件夹/