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

CodeIgniter 3部署GoDaddy后默认路由失效,需指定控制器访问

GoDaddy虚拟主机部署CodeIgniter 3路由问题解决

问题描述

网站部署在GoDaddy虚拟主机,采用CodeIgniter 3框架,遇到以下问题:

  • 直接访问域名greenvaleschool.in无法打开,仅能通过greenvaleschool.in/home正常访问;
  • routes.php配置未生效,必须指定完整控制器和方法名才能访问,例如需访问greenvaleschool.in/home/gallery。

已调整大小写问题,当前配置如下:

routes.php 配置

$route['default_controller'] = 'Home';

.htaccess 配置

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

解决方案

1. 修正CodeIgniter核心配置

打开application/config/config.php,调整以下两项:

  • 设置正确的base_url:
    $config['base_url'] = 'https://greenvaleschool.in/';
    
  • 清空index_page,移除URL中的index.php:
    $config['index_page'] = '';
    

2. 适配GoDaddy环境修改.htaccess

GoDaddy的Apache环境对Rewrite规则有特殊要求,替换现有.htaccess为以下内容(两种写法可分别测试):

写法一(添加默认控制器跳转规则)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    # 根域名直接跳转到Home控制器
    RewriteRule ^$ index.php?/Home [L]
    # 处理非文件/目录的路由请求
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

写法二(简化Rewrite规则)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

3. 确认控制器文件与类名规范

CodeIgniter 3对控制器命名严格区分大小写:

  • 控制器文件名需首字母大写,例如Home.php;
  • 类名必须与文件名一致,首字母大写:
    class Home extends CI_Controller {
        public function index() {
            // 默认方法逻辑
        }
    }
    

4. 启用GoDaddy主机的mod_rewrite模块

登录GoDaddy主机控制面板,在“主机设置”或“Apache配置”中确认mod_rewrite已启用;若找不到相关选项,可联系GoDaddy客服协助开启。

5. 清除CodeIgniter缓存

删除application/cache目录下的所有文件,避免缓存导致配置未生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:45:21