CodeIgniter 4.2.7路由异常:非主页链接访问出现404错误求助
问题原因与解决方案
核心问题
你的路由配置和视图链接路径存在前缀错误,导致CodeIgniter无法匹配到正确的控制器方法,触发404错误。
具体修正步骤
1. 调整路由配置
CodeIgniter 4的路由是基于baseURL的相对路径,不需要包含public前缀(public是项目的Web入口目录,不属于路由规则的一部分)。
修正后的路由代码:
$routes->get('/', 'c_accueil::index'); $routes->get('espaceNintendo', 'c_accueil::espaceNintendo');
2. 修正视图中的链接路径
anchor()助手函数会自动结合baseURL生成完整链接,无需手动拼接/public/。直接使用路由定义的路径即可:
修正后的v_menu代码:
<?=anchor('/', 'Accueil')?> <?=anchor('espaceNintendo', 'Espace Nintendo')?>
如果需要更明确的路径,也可以使用site_url()函数生成完整URL:
<?=anchor(site_url('/'), 'Accueil')?> <?=anchor(site_url('espaceNintendo'), 'Espace Nintendo')?>
原理说明
你的baseURL设置为http://localhost:63342/ProjetWeb,而Web服务器的入口指向项目的public目录,因此访问http://localhost:63342/ProjetWeb/public/时,CodeIgniter会解析为根路由/。
之前的路由配置中添加了/public/前缀,导致系统尝试匹配http://localhost:63342/ProjetWeb/public/public/espaceNintendo这个不存在的路径,从而返回404错误。修正后,路由规则会正确匹配http://localhost:63342/ProjetWeb/public/espaceNintendo,调用c_accueil::espaceNintendo方法。
内容的提问来源于stack exchange,提问作者Mélina Mitterrand
相关产品推荐
相关产品推荐

