OpenCart 2.0.1.1后台订单页JSON解析错误与301跳转求助
解决OpenCart 2.0.1.1后台订单页JSON解析错误与301跳转问题
问题原因分析
这个问题的核心是后台订单页面的AJAX请求被错误重定向到了api/voucher/add接口:原本应该返回JSON数据的请求,却返回了301跳转的HTML页面,前端尝试把HTML内容解析成JSON,自然就触发了SyntaxError: JSON.parse: unexpected character错误。
具体可能的触发点:
- 服务器URL重写规则(.htaccess)配置错误,误将后台AJAX请求导向API接口
- 第三方扩展冲突(尤其是优惠券/订单管理类插件)干扰了后台订单页的路由逻辑
- 站点HTTPS/HTTP强制跳转配置有问题,导致请求被意外重定向
分步解决方法
1. 检查并修复.htaccess文件
先排查网站根目录的.htaccess文件,确认重写规则没有错误拦截后台请求:
- 打开
.htaccess,找到核心重写规则:
确保这条规则不会把RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]admin/sale/order相关的AJAX请求错误重写。 - 如果站点启用了HTTPS,检查强制跳转规则,比如:
确认后台请求能被正确覆盖,不会出现跨协议的错误跳转。RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2. 排查第三方扩展冲突
因为错误跳转指向api/voucher/add,大概率和优惠券类插件有关:
- 临时禁用所有已安装的第三方扩展(重点排查优惠券、订单管理类),刷新后台订单页测试错误是否消失。
- 如果禁用后问题解决,再逐个重新启用扩展,定位到冲突插件,要么更新至兼容OpenCart 2.0.1.1的版本,要么替换为其他替代插件。
3. 修复核心路由配置
如果前两步无效,可能是核心路由文件被篡改:
- 检查
admin/controller/sale/order.php,确认AJAX相关方法(比如getList)的请求路径未被恶意修改。 - 检查
catalog/controller/api/voucher.php,确认add方法的路由未被错误绑定到后台订单页的请求上。
4. 清除缓存与会话
- 进入OpenCart后台,通过「系统→设置→编辑商店→服务器→清除缓存」清理系统缓存
- 清除浏览器缓存,或使用隐私模式打开后台,测试问题是否依然存在
额外提示
如果问题是近期才出现的,回忆下最近是否修改过服务器配置、安装过新插件或更新过核心文件,这些操作通常是触发此类问题的诱因。
内容的提问来源于stack exchange,提问作者Shoaib Fareed
相关产品推荐
相关产品推荐

