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

CodeIgniter静态URL重写:将users/login替换为usuarios/login

在CodeIgniter中实现URL路径替换(users → usuarios)

嘿,我来帮你搞定这个需求!要把/users/login这类URL映射到/usuarios/login,其实用CodeIgniter自带的路由系统就能轻松实现,不用折腾服务器的复杂重写规则(当然如果已经配置了隐藏index.php的规则,两者也完全兼容)。下面分场景给你详细说明:

方法一:用CodeIgniter路由系统实现核心映射

首先打开项目根目录下的application/config/routes.php——这是CodeIgniter管理路由的核心配置文件,所有URL映射规则都在这里定义。

1. 单条路径精确匹配

如果你只需要处理/users/login这一个特定路径,直接在文件里添加这条规则:

$route['usuarios/login'] = 'users/login';

这样用户访问http://localhost/myapp/index.php/usuarios/login时,系统会自动转发到Users控制器的login方法,完全符合你的要求。

2. 批量匹配所有users控制器下的方法

要是你希望users控制器的所有方法都能通过usuarios前缀访问(比如/usuarios/profile对应/users/profile,/usuarios/edit/1对应/users/edit/1),可以用通配符路由来批量处理:

$route['usuarios/(:any)'] = 'users/$1';

这里的(:any)会匹配除斜杠外的任意字符,足以覆盖大部分单级方法的场景。如果需要支持多级路径(比如/usuarios/profile/edit/1),可以改用正则匹配路由:

$route['usuarios/(.+)'] = 'users/$1';

⚠️ 注意:路由规则是从上到下匹配的,所以具体的单条路由要放在通配符/正则路由的前面,否则会被批量规则优先匹配,导致特定路径的自定义规则失效。

方法二:搭配服务器重写隐藏index.php(可选)

如果你还想把URL里的index.php去掉,让地址更简洁(变成http://localhost/myapp/usuarios/login),还需要配置服务器的重写规则:

Apache服务器(用.htaccess)

在项目根目录创建.htaccess文件,写入以下内容:

RewriteEngine On
# 排除实际存在的文件和目录,避免重写静态资源
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 把所有请求转发到index.php处理
RewriteRule ^(.*)$ index.php/$1 [L]

然后修改application/config/config.php里的配置项:

$config['index_page'] = '';

Nginx服务器

在你的Nginx站点配置中添加这段规则:

location /myapp {
    try_files $uri $uri/ /myapp/index.php?$query_string;
}

同样要把config.php里的$config['index_page']设为空字符串。

额外注意事项

  • 确保你的控制器文件命名符合CodeIgniter规范:Users.php(首字母大写),控制器类名也是Users,login方法存在且可访问。
  • 测试前记得清空浏览器缓存,避免旧的URL缓存影响测试结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:59:42