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

服务器根目录WordPress与子目录CodeIgniter访问重定向及500错误问题

解决方案

第一步:修正根目录WordPress的.htaccess规则

你遇到的/codeigniter被重定向到/en/codeigniter的问题,本质是WordPress的默认重写规则会接管所有请求——包括子目录CodeIgniter的路径,大概率是WP的多语言插件或站点语言前缀设置触发了这个定向。我们需要让WP主动忽略/codeigniter开头的请求。

打开根目录的.htaccess,找到WP默认的重写规则块,在指定位置添加排除条件:

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# 新增:让WP跳过CodeIgniter子目录的请求
RewriteCond %{REQUEST_URI} !^/codeigniter/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

添加这条RewriteCond %{REQUEST_URI} !^/codeigniter/后,WP就不会再处理/codeigniter开头的请求,直接交给子目录的CodeIgniter接管。

第二步:配置CodeIgniter子目录的.htaccess(可选)

如果你的CodeIgniter需要去掉URL中的index.php以优化路径,可以在/codeigniter目录下创建/修改.htaccess,添加以下规则:

RewriteEngine On
RewriteBase /codeigniter/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

这个规则会把所有非文件/非目录的请求转发到CI的index.php,同时避免和WP的规则冲突。

为什么你之前的RewriteRule会触发500错误?

你写的RewriteRule ^(.*/)?codeigniter/(.*) /codeigniter/$1 [L]存在无限循环的致命问题:

  • 当请求/codeigniter/xxx时,正则会匹配到该路径,重写后的结果依然是/codeigniter/开头的路径,会再次被这条规则捕获,服务器反复处理直到超出循环限制,最终返回500错误。

这条规则完全没必要,正确思路是让WP直接忽略CI目录,而非强行重写路径。

最后验证

修改完两个.htaccess后,清空浏览器缓存,访问www.wordpress.com/codeigniter,应该就能正常进入CodeIgniter页面,不会再出现/en的定向了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:14:42