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

Codeigniter访问末尾带斜杠URL未触发404,如何配置返回404页面

CodeIgniter 末尾带斜杠URL返回404实现方案

CodeIgniter默认路由匹配逻辑会自动忽略URL末尾的斜杠,要实现末尾带斜杠的非目录URL返回404,可通过以下两种方案实现:

方案1:通过.htaccess规则拦截(性能最优,无需修改框架代码)

  • 找到站点根目录的.htaccess文件,在原有Rewrite规则前新增以下配置:
# 匹配末尾带斜杠的URL,排除实际存在的站点目录
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ - [R=404,L]
  • 若需要连真实存在的目录带斜杠访问也返回404,直接删除RewriteCond %{REQUEST_FILENAME} !-d这一行即可。

方案2:通过框架前置钩子拦截(适配无.htaccess场景)

如果站点没有启用Apache重写规则,可通过框架钩子实现逻辑拦截:

  1. 打开application/config/config.php,设置$config['enable_hooks'] = TRUE;开启钩子功能
  2. 打开application/config/hooks.php,新增钩子注册配置:
$hook['pre_controller'] = array(
    'class'    => '',
    'function' => 'check_trailing_slash',
    'filename' => 'check_trailing_slash.php',
    'filepath' => 'hooks',
);
  1. 在application/hooks目录下新建check_trailing_slash.php文件,写入校验逻辑:
function check_trailing_slash() {
    $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    // 排除根路径的斜杠,避免首页访问被误拦截
    if ($path !== '/' && substr($path, -1) === '/') {
        show_404();
    }
}
  • 该方案直接调用CodeIgniter原生show_404()方法,返回的404页面和框架默认404完全一致。

效果验证

配置完成后测试即可:

  • 访问http://www.example.com/abc可正常加载页面
  • 访问http://www.example.com/abc/直接返回404错误页面

内容的提问来源于stack exchange,提问作者إرتقاء

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:21:03