CodeIgniter的.htaccess文件核心作用是将非真实文件/目录的请求重写至index.php,实现URL去index.php;需配合开启mod_rewrite、AllowOverride All及$config['index_page'] = ''配置。

CodeIgniter 的 .htaccess 文件核心作用是把所有非真实文件/目录的请求,重写到 index.php 入口,从而实现 URL 中不出现 index.php。写法需匹配你的部署路径、服务器配置和 CI 版本,以下是最常用且兼容性好的写法。
标准 Apache .htaccess 写法(推荐)
适用于大多数本地开发环境(如 XAMPP、WAMP)和主流虚拟主机,前提是 Apache 已启用 mod_rewrite 且目录允许覆盖:
-
RewriteEngine On—— 启用重写引擎 -
RewriteBase /—— 若项目部署在根域名(如http://example.com/),保留为/;若在子目录(如http://example.com/myapp/),请改为RewriteBase /myapp/ -
RewriteCond %{REQUEST_FILENAME} !-f—— 排除真实存在的文件(如style.css、logo.png) -
RewriteCond %{REQUEST_FILENAME} !-d—— 排除真实存在的目录(如assets/、uploads/) -
RewriteRule ^(.*)$ index.php/$1 [L]—— 将请求转发给index.php并保留 PATH_INFO 格式(CI 默认推荐)
完整内容如下(保存为纯文本,文件名必须是 .htaccess,注意开头的点):
RewriteEngine OnRewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
常见变体与适配场景
某些服务器(尤其是共享主机)对 PATH_INFO 支持不佳,或你启用了 $config['uri_protocol'] = 'REQUEST_URI',此时可改用查询参数方式:
将 WCAG 2 AA 无障碍标准应用于设计系统、UI 组件和网页——通过可运行的验证器进行对比度计算,采用设计 token 模式使颜色天生可访问,设定排版和焦点状态规则,并提供语义检查清单。适用于构建或审查 UI。
立即学习“PHP免费学习笔记(深入)”;
- 将最后一行替换为:
RewriteRule ^(.*)$ index.php?/$1 [L] - 若项目不在网站根目录(例如放在
/ci-project/),RewriteBase必须同步调整,并在 RewriteRule 中补全路径:RewriteRule ^(.*)$ /ci-project/index.php/$1 [L] - 为避免误重写静态资源,可显式排除常用目录:
RewriteCond $1 !^(index\.php|assets|css|js|images|robots\.txt)
配套必须做的两件事
仅靠 .htaccess 不够,还需同步完成:
- 修改
application/config/config.php:$config['index_page'] = '';(清空,不能留空格) - 确认服务器支持重写:
Apache 需开启mod_rewrite(httpd.conf中取消#LoadModule rewrite_module modules/mod_rewrite.so注释);
对应目录的AllowOverride必须设为All(不能是None)
Nginx 用户注意
Nginx 不读取 .htaccess。需在 server 块中添加重写规则:
location / {try_files $uri $uri/ /index.php?$query_string;
}
同时仍需设置 $config['index_page'] = '';,并确保 fastcgi_param SCRIPT_FILENAME 指向正确路径。


















