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

PrestaShop模块AJAX调用PHP文件返回404问题求助

解决PrestaShop中AJAX调用PHP文件返回404的问题

嘿,我之前也碰到过一模一样的情况,结合你说的场景——PrestaShop开了友好URL后,AJAX调用明明存在的PHP文件却返回404,而且只有这个域名出问题,下面给你几个实用的排查和解决思路:

1. 给AJAX文件在.htaccess里加规则例外

PrestaShop默认的.htaccess会把绝大多数请求都导向index.php,你的AJAX调用的PHP文件大概率被这条规则拦截了。你需要在默认重写规则之前,加一条让服务器直接处理目标文件的规则:

比如你的AJAX处理文件是/modules/your-custom-module/ajax-processor.php,就在.htaccess里RewriteEngine On之后添加:

RewriteRule ^modules/your-custom-module/ajax-processor.php$ - [L]

[L]标记表示这条规则是最后执行的,匹配到这个路径后就跳过后续的重写规则,直接访问文件本身。

2. 确保AJAX请求用绝对路径

开启友好URL后,页面的URL层级会变化(比如从index.php?id_product=1变成/group/product_name_1.html),如果AJAX用相对路径的话,很容易解析错误。建议直接用根目录开头的绝对路径:

$.ajax({
    url: '/modules/your-custom-module/ajax-processor.php',
    type: 'POST',
    data: { /* 你的请求数据 */ },
    // 其他配置...
});

别用./ajax-processor.php这种相对路径,尤其是在产品页、分类页这种URL结构复杂的页面里。

3. 检查该域名的服务器配置差异

既然同一VPS上其他域名没问题,那得看看这个域名的虚拟主机配置有没有特殊设置:

  • 如果你用的是Apache,确认该域名的虚拟主机配置里开了AllowOverride All,PrestaShop的.htaccess规则需要这个权限才能正常生效,没开的话可能导致规则异常。
  • 如果是Nginx(哪怕你提到了mod_rewrite,也有可能是Nginx模拟的规则),检查该域名的server块里的重写规则,是不是把所有请求都导向了index.php,却没给AJAX的PHP文件留例外。

4. 再确认下PHP文件的细节

虽然你说文件存在,但还是要再核对下:

  • 文件权限:一般设置文件权限为644,所在目录权限为755,确保服务器能正常读取这个文件。
  • 大小写问题:Linux服务器是区分大小写的,比如你请求的是Ajax-Processor.php,但实际文件是ajax-processor.php,就会直接返回404。

5. 开PrestaShop调试模式看详细错误

去PrestaShop后台的「高级参数」->「性能」里开启调试模式,然后再发起AJAX请求,有时候会返回更具体的错误提示,帮你快速定位问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:43:46