translateuridashes 是 codeigniter 的 uri 短横线转下划线配置项,默认 false;设为 true 时,将 user-profile 自动转为 user_profile 以匹配控制器类名 blog_post 和方法 get_by_tag,仅作用于自动路由,不影响手动定义的 $route 规则。

translateURIDashes 是 CodeIgniter 中一个与 URI 处理相关的配置项,作用是决定是否将 URL 路径中的短横线(-)自动转换为下划线(_),主要影响控制器类名、方法名的匹配逻辑。
它位于 application/config/config.php 文件中,配置形式为:
$config['translateURIDashes'] = FALSE;
默认值是 FALSE,即不启用转换;设为 TRUE 后,CI 会在解析 URI 段时,把路径中的 - 替换为 _,再尝试匹配控制器或方法。
为什么需要这个配置?
CodeIgniter 要求控制器类名和方法名符合 PHP 命名规范(如不能含短横线),但 URL 中用 user-profile 比 user_profile 更友好、更符合 REST 风格。
比如访问:http://example.com/user-profile/edit/123
若
$config['translateURIDashes'] = FALSE(默认)
CI 会尝试加载控制器类User-profile→ 报错(PHP 不允许类名含-)。若
$config['translateURIDashes'] = TRUE
CI 自动把user-profile→user_profile,进而查找User_profile类(对应文件User_profile.php),正常运行。
实际使用注意事项
✅ 控制器文件名和类名必须与转换后一致
如 URI 段为blog-post,需有Blog_post.php文件,且类名为class Blog_post extends CI_Controller✅ 方法名也适用该规则
http://example.com/blog-post/get-by-tag→ 查找get_by_tag()方法❌ 不影响路由规则本身
$route['blog-post'] = 'blog_post';这类手动路由不受此配置影响,它只作用于自动路由(Auto-routing)或默认的 URI 段映射逻辑⚠️ 启用后需确保所有相关类/方法命名已按
_风格定义,否则 404
推荐做法
- 开发新项目且重视 URL 可读性时,可设为
TRUE,并统一用snake_case命名控制器与方法 - 已有项目或习惯
PascalCase控制器 +camelCase方法时,保持FALSE更稳妥 - 无论设为何值,都建议配合明确的路由规则(
routes.php)来避免歧义,提高可维护性











