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

CodeIgniter 4 使用 form_open 生成链接自带 index.php 如何去除?

CodeIgniter 4 form_open()生成链接去除index.php解决方案
  • 第一步:修改App核心配置
    打开app/Config/App.php,找到$indexPage参数,将默认值index.php改为空字符串:
    public $indexPage = '';
    
    同时确认同文件下的$baseURL参数和你项目实际访问域名/路径完全一致,不需要携带public或index.php:
    public $baseURL = 'http://你的项目访问地址/';
    
    form_open()生成URL时会默认调用site_url()方法,该方法的拼接规则为$baseURL + $indexPage + 传入的路由路径,修改$indexPage为空即可直接去掉拼接的index.php。
  • 第二步:确认重写规则配置
    如果你使用Apache服务器,确认项目根目录的.htaccess配置如下,保证所有请求都能正确重写到入口文件:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    
    如果你使用Nginx服务器,确认站点配置中加入以下重写规则:
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
  • 第三步:校验调用逻辑和路由配置
    调用form_open()时直接传入自定义路由的路径即可,不需要手动拼接任何前缀,比如你在app/Config/Routes.php中定义了路由:
    $routes->post('form/submit', 'FormController::handleSubmit');
    
    视图中直接写<?= form_open('form/submit') ?>即可。
  • 第四步:清除缓存
    如果修改配置后未生效,执行CI4缓存清除命令:
    php spark cache:clear
    
    同时清除浏览器缓存后再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:21:00