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

CodeIgniter3部署到IIS服务器出现Bad Request错误如何解决

CodeIgniter3部署IIS返回Bad Request解决方案

1. 修正config.php核心配置

修改application/config/config.php内的以下参数:

  • 把$config['base_url']设置为IIS站点的实际访问地址,包含绑定的域名/IP和子目录路径(如有),不要留空或使用本地测试地址
  • 把$config['index_page']设置为空字符串'',移除默认的index.php后缀
  • 必须把$config['uri_protocol']设置为'REQUEST_URI',IIS下默认的AUTO参数大概率会出现路径识别错误
  • 确认$config['enable_query_strings']保持默认false,除非你的业务明确需要开启查询字符串路由

2. 配置IIS伪静态规则

CI默认的.htaccess规则IIS无法识别,需要在站点根目录(和入口文件index.php同级)新建web.config配置文件,写入以下内容:

注意不要把该文件放在application目录下,否则规则不会生效

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="CodeIgniter重写规则" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

配置前确认IIS已经安装URL重写模块,这是伪静态规则生效的前提。

3. 路由配置校验

检查application/config/routes.php配置:

  • 确认$route['default_controller']对应的控制器存在,CI3要求控制器文件名全小写,类名首字母大写
  • 先注释所有自定义路由,仅保留默认控制器、404路由测试基础访问是否正常,确认无误后再逐步恢复自定义路由
  • 排查正则路由的规则错误,不规范的正则匹配会直接触发400错误

4. 目录权限配置

给以下目录授予IIS对应应用池用户的读写权限:

  • application/cache
  • application/logs
    权限不足引发的写入错误也会间接返回400状态码。

5. 调试排查方案

如果以上配置完成仍报错,修改根目录index.php中的ENVIRONMENT参数为development开启CI调试模式,会显示具体的错误详情,可针对性解决问题。

内容的提问来源于stack exchange,提问作者Ricky Reza Muhammad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:45:03