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

在WordPress目录内访问CodeIgniter控制器遇权限问题求助

CodeIgniter嵌入WordPress目录后权限/路由问题排查

一、问题核心

  • CodeIgniter部署在WordPress目录下的/v2/gym_management_system路径,登录页可正常访问,但提交登录请求(/v2/gym_management_system/index.php/User_authentication/user_login_process)返回Access Denied
  • 此前为WordPress 404错误,调整.htaccess后转为权限/路由问题,所有CI控制器均无法访问

二、.htaccess配置修正

1. WordPress根目录.htaccess

当前WP的Rewrite规则会把所有非文件/目录的请求转发到WP入口/index.php,直接拦截了CI的控制器请求。得在WordPress的Rewrite规则前加一条排除规则,让CI目录的请求跳过WP处理:

修改后的WP .htaccess:

# BEGIN rlrssslReallySimpleSSL rsssl_version[5.2.1]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# END rlrssslReallySimpleSSL
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# 新增:排除CI目录请求,不转发到WP
RewriteRule ^v2/gym_management_system/ - [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

这条RewriteRule ^v2/gym_management_system/ - [L]的作用是:匹配所有以v2/gym_management_system/开头的请求,直接终止后续Rewrite规则,让请求进入CI目录处理。

2. CodeIgniter目录.htaccess

你现在把CI的.htaccess放在application子目录是错的!必须移到CI的根目录(public_html/v2/gym_management_system/),否则Rewrite规则根本不生效。调整后的CI .htaccess内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /v2/gym_management_system/
# 排除静态资源和入口文件
RewriteCond $1 !^(index\.php|resources|assets|images|js|css|uploads|favicon.png|favicon.ico|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
  • 加RewriteBase /v2/gym_management_system/:指定Rewrite基准路径,确保CI能正确解析路由
  • 去掉?:CI的URL重写不需要?,直接用index.php/$1即可

三、CodeIgniter配置调整

  1. 修改application/config/config.php的基础URL:
$config['base_url'] = 'https://www.mydomain.com/v2/gym_management_system/';

确保base_url指向CI的根路径,避免路由生成错误。

  1. 检查index_page设置:
$config['index_page'] = '';

保持为空,配合.htaccess实现URL隐藏index.php。

  1. 控制器权限检查
    确认User_authentication控制器的user_login_process方法没有过度的权限拦截(比如强制要求已登录才能访问),登录请求本身应该允许匿名访问,有相关逻辑的话得调整。

四、文件权限检查

  • CI目录下的application/、system/、uploads/等目录权限设为755
  • 文件权限设为644,避免服务器因权限问题拒绝访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:27:30