You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii2中Hyperlink Not Found问题解决:页面跳转404报错处理方案

解决Yii中Html::a跳转出现Page Not Found的问题

问题场景

我在views/buku/index.php里写了这段代码,想跳转到views/buku/utama.php页面:

<?= Html::a('Link', ['/buku/utama']) ?>

结果点击链接直接弹出Page Not Found错误,折腾了一会儿终于解决了,把方法整理出来。

问题根源

很多刚接触Yii的朋友容易踩这个坑:Yii的路由是基于控制器+动作的,不是直接映射视图文件。['/buku/utama']这个路由对应的是BukuController里的actionUtama()方法,而不是直接指向utama.php视图。报错的核心原因就是框架找不到对应的动作方法。

解决方案

按照下面的步骤来操作:

  1. 给BukuController添加动作方法
    打开controllers/BukuController.php,添加一个actionUtama()方法,让它负责渲染目标视图:

    public function actionUtama()
    {
        // 如果需要传递数据到视图,可以在这里处理
        // $data = ...;
        // return $this->render('utama', ['data' => $data]);
        return $this->render('utama');
    }
    

    这个方法的作用就是告诉框架,当访问/buku/utama时,要执行这个方法并渲染utama.php视图。

  2. 检查视图文件的正确性
    确认views/buku/utama.php确实存在,文件名和路径都没有拼写错误——尤其是在Linux或Mac环境下,Yii对文件名大小写是敏感的,别把Utama.php写成utama.php或者反过来。

  3. 排查自定义路由(可选)
    如果你的项目在config/web.php里配置了urlManager的自定义路由规则,检查一下有没有规则和/buku/utama冲突,导致框架无法正确解析路由。如果有冲突,调整规则优先级或者修改路由即可。

验证

做完上面的步骤后,刷新页面再点击链接,就能正常跳转到目标页面啦~

内容的提问来源于stack exchange,提问作者Ayunda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:29:35