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

咨询:Codeigniter表单action为何自动添加.html后缀

问题分析:CodeIgniter表单Action异常的原因

看起来你遇到了控制器传递的action变量和最终渲染的表单URL不匹配的问题,我来帮你梳理几个最可能的原因:

  • 视图里硬编码了表单Action,没使用传递的变量
    这是最常见的坑! 你得去检查contact.php视图文件里的表单代码,是不是没用到你在控制器里传的$action变量,反而硬写了Booknow/add.html。比如如果视图里是这样写的:

    <form action="Booknow/add.html" id="registrationform" class="row" name="registrationform" method="post" accept-charset="utf-8">
    

    那不管你控制器传什么,都会用这个硬编码的路径。正确的写法应该是用CodeIgniter的site_url()函数结合传递的变量:

    <form action="<?php echo site_url($action); ?>" id="registrationform" class="row" name="registrationform" method="post" accept-charset="utf-8">
    
  • 路由规则被修改,导致URL映射错误
    打开application/config/routes.php看看有没有类似这样的路由规则:

    $route['contact/add'] = 'Booknow/add';
    

    或者有正则表达式路由把contact/add的请求重定向到了Booknow/add,这会让site_url('contact/add')生成的URL变成Booknow/add。

  • URL配置或重写规则出问题

    • 检查application/config/config.php里的$config['base_url']是不是设置正确,有没有写错域名或者路径;
    • 如果你用了.htaccess来去掉URL里的index.php,看看重写规则是不是有错误,比如不小心把contact/add的请求重写到了Booknow/add。
  • 缓存导致的旧内容残留
    有时候浏览器缓存了旧的页面,或者你开启了CodeIgniter的视图缓存,都会让你看到旧的表单代码。试试清空浏览器缓存,或者如果开了视图缓存,去application/cache/views目录下删掉对应的缓存文件。

  • 控制器/视图文件搞混了
    有没有可能你修改的不是当前生效的控制器?比如你改的是Contact控制器,但实际访问的是Booknow控制器?或者contact.php视图文件有多个,你编辑的是没用的那个?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:41:10