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

移除URL中.php后缀后AJAX POST请求出现404找不到URL问题

解决AJAX POST请求因.htaccess移除.php后缀导致的404问题

这个404问题的根源很明确:你用.htaccess去掉了URL的.php后缀,但只做了外部请求(浏览器地址栏)到无后缀URL的重定向,却没配置无后缀URL到对应.php文件的内部转发——你的AJAX请求giveView其实对应的是giveView.php,但服务器不知道要去找这个文件,所以返回404。

修复步骤:

1. 补全.htaccess的规则,添加内部转发逻辑

你需要在现有规则基础上,加上把无后缀请求映射到对应.php文件的规则。完整的.htaccess配置如下:

RewriteEngine On

# 除非是真实目录,否则移除URL末尾的斜杠
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule ^([^/]+)/$ http://localhost/myWebsite/$1 [R=301,L]

# 将浏览器发起的带.php后缀的请求重定向到无后缀URL(保持地址栏干净)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php\s [NC]
RewriteRule ^ %1 [R=301,L]

# 核心:内部转发无后缀请求到对应的.php文件(解决AJAX 404的关键)
RewriteCond %{REQUEST_FILENAME}!-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

2. 验证文件路径正确性

确保你的服务器上确实存在文件:/style-faq/includes/handlers/ajax/giveView.php,注意路径的大小写(Linux服务器区分大小写,Windows不区分)。

3. 测试规则是否生效

直接在浏览器地址栏访问http://localhost/style-faq/includes/handlers/ajax/giveView,如果能正常返回PHP脚本的响应(比如JSON数据),说明规则已经生效,此时AJAX请求也能正常找到目标URL了。

额外注意事项:

  • 确保Apache的mod_rewrite模块已经开启(在httpd.conf中找到LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的注释)
  • 如果你网站的根目录不是/myWebsite,建议把重定向规则中的硬编码路径改成动态路径,避免迁移时出错:
    RewriteRule ^([^/]+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
    
  • AJAX请求尽量使用相对路径(比如./includes/handlers/ajax/giveView),避免因域名或根目录变化导致路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:07:00