在共享主机上使用高级项目模板
将高级项目模板部署到共享托管是较常见的棘手问题,因为它有两个 WEB 目录,共享托管 Web 服务器不支持。 我们需要调整目录结构,因此前端 URL 将为 http://site.local
,后端 URL 将为 http://site.local/admin
。
移动到代码到单个 WEB 目录中
首先我们需要一个 WEB 目录。 创建一个新目录并将其命名为与您的托管 webroot
名称匹配,例如 www
或 public_html
等。 然后创建以下结构,其中 www
是您刚刚创建的托管 WEB 目录
www
admin
backend
common
console
environments
frontend
...
www
将是我们的前端目录,所以将 frontend/web
的内容移动到其中。 将 backend/web
的内容移动到 www/admin
。 然后调整 前后端的 index.php
和 index-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