Yii 2使用Gii生成CRUD后访问对应路径报404错误如何解决?
Yii2后端Product路由404问题排查方案
1. 优先排查基础拼写与结构错误
- 控制器文件名修正:你提供的结构中控制器命名为
ProductContoller,拼写错误,正确名称应为ProductController(少写了1个字母r),需同时保证文件内的类名和文件名完全一致,命名空间为namespace backend\controllers;,且继承yii\web\Controller。 - 视图目录结构修正:CRUD生成的视图不应放在
views/layouts目录下(该目录为全局布局文件目录),需将product视图文件夹移动到backend/views/根目录下,修正后结构如下:
backend/ ├── controllers/ │ └── ProductController.php ├── views/ │ └── product/ │ ├── _form.php │ ├── _search.php │ ├── create.php │ ├── index.php │ ├── update.php │ └── view.php
2. 检查Web服务器伪静态配置
- 确认域名
yii2-ecommerce.localhost的根目录指向backend/web/,而非项目根目录。 - 确认
backend/web/目录下配置了对应伪静态规则:- Apache环境需新增
.htaccess文件,内容如下:RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php - Nginx环境需在站点配置中新增规则:
location / { try_files $uri $uri/ /index.php$is_args$args; }
- Apache环境需新增
3. 检查路由配置
- 你当前
urlManager的rules为空,可先尝试访问yii2-ecommerce.localhost/product/index排查是否为默认动作匹配问题。 - 如果需要直接通过
/product访问列表页,需在rules中新增对应映射:'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ 'product' => 'product/index', // 其他业务规则按需补充 ], ],
4. 检查权限拦截配置
- 如果你开启了RBAC权限控制,确认当前登录账号有
ProductController对应动作的访问权限。 - 可临时注释
ProductController中behaviors方法里的AccessControl相关配置,排除权限拦截导致的404问题。
内容的提问来源于stack exchange,提问作者Shiromi
相关产品推荐
相关产品推荐

