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

如何配置.htaccess重写规则解决/api/endpoint接口404问题?

解决API接口404的.htaccess配置方案

我来帮你搞定这个URL重写的问题!从你的描述来看,问题出在当前的.htaccess规则没有正确把API请求转发到index.php,或者路径解析存在偏差。下面是调整后的配置和详细解释:

修正后的.htaccess配置

把你现有的/project/public/.htaccess替换成以下内容:

<IfModule mod_rewrite.c>
    RewriteEngine On
    # 设置RewriteBase,确保重写路径基于服务器的DocumentRoot(也就是/public目录)
    RewriteBase /
    # 排除真实存在的文件和目录,避免静态资源被错误转发
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # 将所有非文件/目录的请求转发到index.php,把完整请求路径作为path参数传递
    RewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA]
</IfModule>

关键调整点说明

  • 添加RewriteBase /:这是解决问题的核心!因为你的服务器DocumentRoot指向/project/public,设置RewriteBase /可以让Apache正确解析重写后的路径,确保请求能准确定位到public/index.php。如果缺少这一行,部分服务器环境会出现路径解析错误,直接导致404。
  • 替换规则匹配为^(.*)$:原来的^([^?]*)$虽然能匹配大部分路径,但^(.*)$更通用,能覆盖包含特殊字符的请求路径;同时保留QSA标记,确保请求携带的查询字符串能正确传递到index.php。

额外检查点

如果修改后还是出现404,需要确认Apache虚拟主机配置中是否开启了.htaccess的生效权限:
打开你的Apache虚拟主机配置文件,找到对应myapi.com的<Directory>块,确保设置了AllowOverride All:

<Directory "/path/to/project/public">
    AllowOverride All
    Require all granted
</Directory>

修改后重启Apache服务,让配置生效。

这样配置后,当你访问http://myapi.com/api/endpoint时,请求会被转发到index.php?path=api/endpoint,你的项目就可以通过$_GET['path']获取到这个路径,进而路由到ApiEndpoint.php处理请求啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:32:09