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

Codeigniter线上环境路由失效,本地正常问题求助

问题排查与修复方案

你的.htaccess配置存在逻辑、语法问题,这是线上环境转发规则失效的核心原因,以下是具体问题分析和修复方案:

1. 核心问题点

  • 第一条规则OR条件逻辑错误:最后一个接口路径条件末尾多了OR标记,导致后续排除条件被纳入OR逻辑,异常扩大了规则匹配范围,拦截了本应交给前端路由处理的请求。
  • 路径匹配模式不严谨:%{REQUEST_URI} Stations/*写法有误,*需替换为正则的.*来匹配任意后缀,同时建议添加开头锚定^/Stations/,避免误匹配含相同字符串的其他路径。
  • 前端路由转发目标错误:Vue单页应用(SPA)使用history模式时,所有前端路由请求应转发到/app/index.html而非/app/$1——后者会让Apache尝试寻找对应路径的实际文件,而前端路由由Vue逻辑处理,不存在物理文件,因此返回404。

修改后的.htaccess配置

RewriteEngine on

# 后端接口请求转发到Codeigniter入口
RewriteCond %{REQUEST_URI} ^/Stations/.* [NC,OR]
RewriteCond %{REQUEST_URI} ^/Applications/.* [NC,OR]
RewriteCond %{REQUEST_URI} ^/Auth/.* [NC,OR]
RewriteCond %{REQUEST_URI} ^/Presets/.* [NC,OR]
RewriteCond %{REQUEST_URI} ^/Users/.* [NC,OR]
RewriteCond %{REQUEST_URI} ^/Database/.* [NC,OR]
RewriteCond %{REQUEST_URI} ^/Data/.* [NC,OR]
RewriteCond %{REQUEST_URI} ^/Logs/.* [NC,OR]
RewriteCond %{REQUEST_URI} ^/Isochrones/.* [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?/$1 [L]

# 前端路由请求转发到Vue入口文件
RewriteCond %{REQUEST_URI} !^/app/ [NC]
RewriteCond %{REQUEST_URI} !^/version/.* [NC]
RewriteCond %{REQUEST_URI} !^/(index\.php|images|robots\.txt|css|js|img|png|gif|favicon\.ico) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/index.html [L]

额外线上环境检查项

  • 确认Apache配置中AllowOverride All已开启,否则.htaccess规则不会生效。
  • 核对线上DocumentRoot配置,确保app文件夹确实位于网站根目录下。
  • 检查Vue项目vue.config.js的publicPath配置,根目录部署时需设为/app/。
  • 确认Codeigniter 3.1.9与PHP8兼容,建议升级到CI3.1.13(最新稳定版)以提升PHP8适配性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:13:01