必须将frontend/web和backend/web分别设为两个独立虚拟主机的documentroot;因入口文件依赖web目录为运行基准,移出会导致autoload失败、资源路径错误及配置泄露风险。

macOS安装Yii2高级模板后,前端和后端必须使用各自独立的入口文件,且路径不能混用或指向项目根目录。关键在于:每个应用的入口文件(index.php)必须位于其专属的 web 子目录下,这是框架安全机制与路由解析的基础。
前端入口文件路径及作用
前端入口文件固定为:
/path/to/yii2-advanced/frontend/web/index.php
该文件是用户访问前台站点的唯一合法入口。它加载 frontend 配置、初始化 Web 应用,并确保请求只进入 frontend 模块的控制器、视图与模型。若将浏览器直接指向项目根目录或 /frontend 目录,会因找不到 Yii 类或跳转失败而报 Class 'Yii' not found 或 404 错误。
后台入口文件路径及作用
后台入口文件固定为:
/path/to/yii2-advanced/backend/web/index.php
这是管理员后台的唯一入口。它加载 backend 配置,启用独立的用户认证、布局与权限控制逻辑。注意:backend 的 index.php 与 frontend 的完全隔离,不能复用、复制到其他位置,也不能通过子路径(如 /backend/web)以外的方式暴露——Apache/Nginx 必须将其设为 DocumentRoot 才能正确运行。
为什么不能把入口文件挪到根目录?
- web 目录是唯一允许 Web 服务器公开访问的目录;其他目录(如
controllers、models、config)必须禁止外部访问,否则造成源码泄露或配置暴露 - 入口文件中依赖的相对路径(如
../../vendor/autoload.php)是按web/为基准设计的,移出后 require 失败 - runtime、assets、log 等目录的写入权限和路径解析均以
web为运行起点,移动入口会导致日志无法写入、资源发布失败
本地开发时如何正确访问?
推荐方式是配置两个独立虚拟主机:
- 前台:绑定
www.example.test→ DocumentRoot 指向/frontend/web - 后台:绑定
admin.example.test→ DocumentRoot 指向/backend/web
并在 macOS 的 /etc/hosts 中添加:
127.0.0.1 www.example.test
127.0.0.1 admin.example.test
这样访问 http://www.example.test 就进前台,http://admin.example.test 就进后台,彻底避免路径冲突与 session 混乱。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!









