在共享主机上使用高级项目模板

将高级项目模板部署到共享托管是较常见的棘手问题,因为它有两个 WEB 目录,共享托管 Web 服务器不支持。 我们需要调整目录结构,因此前端 URL 将为 http://site.local,后端 URL 将为 http://site.local/admin

移动到代码到单个 WEB 目录中

首先我们需要一个 WEB 目录。 创建一个新目录并将其命名为与您的托管 webroot 名称匹配,例如 wwwpublic_html 等。 然后创建以下结构,其中 www 是您刚刚创建的托管 WEB 目录

www
    admin
backend
common
console
environments
frontend
...

www 将是我们的前端目录,所以将 frontend/web 的内容移动到其中。 将 backend/web 的内容移动到 www/admin。 然后调整 前后端的 index.phpindex-test.php 中的路径。

调整 sessions 与 cookies

最初的后端和前端都是在不同的域运行。 当我们将它全部移动到同一个域时,前端和后端将共享相同的cookie,从而产生冲突。 为了修复它,请调整后端应用程序 backend/config/main.php 如下所示:

'components' => [
    'request' => [
        'csrfParam' => '_csrf-backend',
        'csrfCookie' => [
            'httpOnly' => true,
            'path' => '/admin',
        ],
    ],
    'user' => [
        'identityClass' => 'common\models\User',
        'enableAutoLogin' => true,
        'identityCookie' => [
            'name' => '_identity-backend',
            'path' => '/admin',
            'httpOnly' => true,
        ],
    ],
    'session' => [
        // 这是用于在后台登录的会话 cookie 的名称
        'name' => 'advanced-backend',
        'cookieParams' => [
            'path' => '/admin',
        ],
    ],
],

替代设置

如果设置上面提供的模板的方式对您无效,请尝试 Oleg Belostotskiy 的 配置和文档 地址: https://github.com/mickgeek/yii2-advanced-one-domain-config