You need to enable JavaScript to run this app. CodeIgniter中通过htaccess移除URL内指定模块名称的问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter中通过htaccess移除URL内指定模块名称的问题咨询

解决方案

第一步:修改根目录.htaccess配置

你原有配置中误将members、funnel加入了重写排除列表,导致这两个前缀的请求不会被转发到index.php处理,需要移除这两个排除项,修改后完整配置如下:

DirectoryIndex index.php
RewriteEngine on
 
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]

第二步:修改application/config/route.php配置

路由匹配遵循从上到下优先匹配的规则,需要将精确匹配的admin规则放在最前面,再配置不带前缀的通用模块路由,同时原有路由仅支持3段参数,需要调整为适配任意长度的参数,修改后完整配置如下:

switch ($_SERVER['HTTP_HOST']) {
    case 'app.example.loc':
        // Admin路由(优先级最高,避免被通用规则覆盖)
        $route['admin(.*)'] = "admin$1";
        $route['admin'] = "admin/index";

        // Members路由:所有非admin开头的请求自动映射到members模块
        $route['default_controller'] = "members/index";
        $route['(:any)'] = "members/$1";
        break;
    default:
        // Funnel路由:所有请求自动映射到funnel模块
        $route['default_controller'] = "funnel/index";
        $route['(:any)'] = "funnel/$1";
        break;
}

效果验证

配置完成后访问规则如下:

  • http://app.example.loc/admin/* 所有admin前缀请求正常映射到admin模块
  • http://app.example.loc/* 所有非admin前缀请求自动映射到members模块,无需加/members前缀
  • http://example.loc/* 所有请求自动映射到funnel模块,无需加/funnel前缀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 23:15:07