Ubuntu环境下CodeIgniter无法移除index.php的问题求助
你已经完成了关键的第一步(设置$config['index_page'] = ''),但在Ubuntu环境下,Apache还有几个容易忽略的配置环节需要调整,我帮你一步步排查:
启用Apache的mod_rewrite模块
CodeIgniter的URL重写完全依赖这个模块,Ubuntu默认可能未启用。打开终端执行以下命令:sudo a2enmod rewrite sudo systemctl restart apache2配置项目根目录的.htaccess文件
在你的homerent项目根目录下,创建或修改.htaccess文件,写入以下规则:RewriteEngine On # 若请求的是真实存在的文件/目录,直接访问 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 否则将请求转发给index.php处理 RewriteRule ^(.*)$ index.php/$1 [L]允许Apache读取.htaccess配置
打开Apache的站点配置文件(通常在/etc/apache2/sites-available/000-default.conf,或你自定义的站点配置),找到对应homerent目录的<Directory>块,将AllowOverride None修改为AllowOverride All,示例如下:<Directory /var/www/html/homerent/> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory>修改完成后重启Apache生效:
sudo systemctl restart apache2检查控制器文件名的大小写
Linux系统严格区分大小写!你的控制器类是Login,那么控制器文件必须命名为Login.php(首字母大写),放在application/controllers/目录下。如果文件名是小写的login.php,访问/Login会直接触发404。确认base_url配置正确
打开application/config/config.php,设置匹配你项目的base_url:$config['base_url'] = 'http://localhost/homerent/';留空可能导致CodeIgniter无法正确解析URL路径。
完成以上步骤后,再访问http://localhost/homerent/Login应该就能正常加载登录视图了。
内容的提问来源于stack exchange,提问作者Houy Narun

