CodeIgniter移除index.php需四步:一、根目录建.htaccess启用mod_rewrite并重写URL;二、config.php中设$config['index_page'] = '';三、routes.php自定义路由;四、Nginx需在server块配try_files。

一、配置.htaccess文件以移除index.php
Apache服务器需通过.htaccess启用重写模块,并将请求重定向至index.php入口,从而隐藏原始URL中的index.php部分。此步骤是URL重写的底层基础。
1、在CodeIgniter项目根目录下创建或编辑名为.htaccess的文件。
2、写入以下内容(确保服务器已启用mod_rewrite):
RewriteEngine On<br>RewriteCond %{REQUEST_FILENAME} !-f<br>RewriteCond %{REQUEST_FILENAME} !-d<br>RewriteRule ^(.*)$ index.php/$1 [L]
3、保存文件后,检查Apache配置中AllowOverride All是否已在对应虚拟主机或目录块中启用。
4、若使用WAMP/XAMPP,还需确认httpd.conf中LoadModule rewrite_module modules/mod_rewrite.so未被注释。
二、修改config.php禁用index_page并设置URL后缀
框架需明确告知不依赖index.php作为路由前缀,并可选统一添加语义化后缀,使URL更符合SEO规范与用户直觉。
1、打开application/config/config.php文件。
2、定位到$config['index_page']行,将其值设为空字符串:
$config['index_page'] = '';
3、向下查找$config['url_suffix'],将其设为'.html'或其他所需后缀(如空字符串表示无后缀):
$config['url_suffix'] = '.html';
4、保存文件,确保该配置在后续路由解析中生效。
三、定义自定义路由规则
通过routes.php可将任意语义化路径映射至具体控制器/方法,支持正则匹配与参数捕获,实现深度URL定制。
1、打开application/config/routes.php文件。
2、添加静态路由示例:将/about指向tehnicki/tekstovi:
$route['about'] = 'tehnicki/tekstovi';
3、添加带参数的动态路由示例:匹配/catalog/product-name-here并传递给catalog/view方法:
$route['catalog/(:any)'] = 'catalog/view/$1';
4、添加支持空格与大小写的正则路由(需配合URL编码处理):
$route['controller/function_name/([a-zA-Z\s]+)'] = 'controller/function_name/$1';
四、适配Nginx服务器的重写配置
Nginx不识别.htaccess,必须在站点配置中显式声明重写规则,否则所有非静态资源请求将返回404。
1、进入Nginx配置文件(通常为/etc/nginx/sites-available/your-site或nginx.conf中的server块)。
2、在location /块内添加try_files指令:
location / {<br> try_files $uri $uri/ /index.php?$query_string;<br>}
3、确保location ~ \.php$块已正确定义并指向PHP处理器(如php-fpm)。
4、执行sudo nginx -t验证语法,再运行sudo systemctl reload nginx应用变更。
五、修复常见重写失效问题
当URL重写配置完成但页面仍报404或跳转回index.php时,需排查多层服务环节的兼容性与权限设置。
1、检查.htaccess文件是否被Apache忽略:确认AllowOverride未设为None,且位于<directory></directory>作用域内。
2、验证index.php是否存在于根目录且具有可执行权限(Linux下建议chmod 644 index.php)。
3、若使用子目录部署(如localhost/myapp/),需在.htaccess中添加RewriteBase /myapp/指令。
4、在config.php中确认$config['base_url']已正确设置为包含子路径的完整URL,例如:http://localhost/myapp/。

















