yii2部署:共享托管环境

yii2高级模板是前后台分离的,在本地测试的时候通常是绑定两个域名到前后台目录下,从而通过不同的域名访问前后,如:www.frontend.com访问前台,www.backend.com访问后台。

但是有时候我们的线上环境不支持绑定二级域名,这样我们就得通过同一个域名访问我们的前后台了。Yii2通过如下方式实现:

1、在服务器上的web根目录下创建一个admin目录,用于存放后台相关文件

2、将后台backend目录下web目录里的文件放入到admin目录下

3、将前台frontend目录下的web目录里的文件放入到服务器上的web根目录下

变更后目录结构如下:

对于每种情况下,你需要调整`index.php 和 index-test.php` 里面引用的目录结构。

分离 Session 和 Cookie

通常情况下,backend 和 frontend 运行在不同的域下,当我们将其都移到同一个域时, frontend 和 backend 将会共享相同的 cookie,这样会造成冲突。为了修复这个问题,如下调整 backend 的应用程序配置文件 backend/config/main.php

'components' => [
    'request' => [
        'csrfParam' => '_backendCSRF',
        'csrfCookie' => [
            'httpOnly' => true,
            'path' => '/admin',
        ],
    ],
    'user' => [
        'identityCookie' => [
            'name' => '_backendIdentity',
            'path' => '/admin',
            'httpOnly' => true,
        ],
    ],
    'session' => [
        'name' => 'BACKENDSESSID',
        'cookieParams' => [
            'path' => '/admin',
        ],
    ],
],

到这里你就可以通过你的域名访问前后台了,如通过www.example.com访问前台,www.example.com/admin 访问后台

原文地址:https://www.cnblogs.com/qmsu/p/4891352.html