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

新手求助:如何用.htaccess配置PHP API的URL重写规则

解决方案:用.htaccess实现需求

完全可以通过.htaccess实现你的需求,以下是完整的配置代码,直接放到你的/api目录下的.htaccess文件里(如果没有就新建一个):

# 开启URL重写引擎
RewriteEngine On

# 排除实际存在的文件/目录,避免静态资源被重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 处理最后一段是数字的URL,比如/api/user/142 → /api/index.php?id=142
RewriteRule ^.*/(\d+)$ index.php?id=$1 [L]

# 处理其他所有URL,比如/api/user → /api/index.php
RewriteRule ^.*$ index.php [L]

代码逐行解释:

  • RewriteEngine On:开启URL重写功能,这是所有重写规则生效的前提。
  • RewriteCond %{REQUEST_FILENAME} !-f:如果请求的路径不是真实存在的文件,才继续执行后续规则,避免图片、CSS等静态资源被错误重写。
  • RewriteCond %{REQUEST_FILENAME} !-d:如果请求的路径不是真实存在的目录,才继续执行后续规则。
  • 第一条RewriteRule:
    • ^.*/(\d+)$:正则匹配规则,^匹配URL开头,.*/匹配前面任意路径部分,(\d+)捕获最后一段的一串数字,$匹配URL结尾。
    • index.php?id=$1:把捕获到的数字通过$1传递给index.php的id参数。
    • [L]:标记为最后一条规则,匹配成功后不再处理后续规则。
  • 第二条RewriteRule:匹配所有未被上面规则捕获的URL,直接重定向到index.php,交由PHP处理路由逻辑。

注意事项:

  • 确保你的Apache服务器已经开启了mod_rewrite模块,若未开启需联系服务器管理员或查阅主机配置文档开启。
  • 如果index.php不在/api目录下,需要把规则里的index.php改成完整路径,比如/index.php。
  • 在PHP代码中,你可以通过$_GET['id']获取数字参数,其他路由信息可通过$_SERVER['REQUEST_URI']获取来处理自定义路由。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:45:40