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

CodeIgniter 2网站移除index.php后非首页出现404错误求助

CodeIgniter 2网站移除index.php后非首页出现404错误求助

嘿,我看了你的问题和配置,这应该是CodeIgniter 2在群晖NAS+Docker+Web Station这个特定环境下,URL重写规则适配或者服务器配置导致的问题,咱们一步步来排查解决:

1. 先调整.htaccess的重写规则适配环境

你当前.htaccess最后一行的规则是:

RewriteRule ^(.*)$ index.php/$1 [L]

这种index.php/$1的路径拼接方式,在FastCGI或者部分Apache配置环境下会无法正常转发请求到CodeIgniter入口。你可以把这行改成:

RewriteRule ^(.*)$ index.php?$1 [L]

把路径分隔符/换成查询字符串的?,这是解决这类404问题最常用的调整方案,很多环境下改完就生效了。

2. 修正CodeIgniter的URI协议识别配置

你现在的$config['uri_protocol']设为AUTO,但CodeIgniter 2的自动识别模式在部分服务器环境下会失效,没法正确解析去掉index.php后的URL。你可以尝试把它改成:

$config['uri_protocol'] = 'REQUEST_URI';

如果还是不行,再试试改成QUERY_STRING:

$config['uri_protocol'] = 'QUERY_STRING';

改完后记得清空application/cache目录下的缓存文件(如果有的话),再测试/signup路径。

3. 确认服务器的重写模块和.htaccess权限

因为你用的是群晖Web Station+Docker环境,必须确保这两个关键点:

  • 启用mod_rewrite模块:如果用的是Apache服务(不管是Web Station自带还是Docker容器里的),一定要开启rewrite模块。群晖Web Station可在对应网站的服务设置里找到开关;如果是Docker容器,需要进入容器执行a2enmod rewrite命令,然后重启Apache服务。
  • 允许.htaccess覆盖配置:Apache虚拟主机设置中,你的网站目录对应的AllowOverride参数要设为All(不能是None),这样.htaccess里的规则才能被服务器执行。群晖Web Station里一般有“允许.htaccess覆盖”的可视化开关,记得打开。

4. 额外注意协议一致性问题

我看到你测试用的链接有HTTPS协议,但base_url设置的是http://www.interjo.in/,这虽然不是404的直接原因,但会导致CodeIgniter生成的URL协议不一致,建议改成和实际访问一致的:

$config['base_url'] = 'https://www.interjo.in/';

你可以按这个顺序一步步测试,优先改.htaccess的规则,这是最可能解决问题的步骤。

备注:内容来源于stack exchange,提问作者jeromie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 08:38:06