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

如何通过Apache .htaccess仅允许特定URL访问并实现URL重写?

Apache .htaccess 配置实现指定端点重写与访问控制

问题分析

你之前的两种配置存在以下问题:

  1. 第一种配置允许直接访问get.php和report.php,不符合你"仅开放/api/get和/api/report端点"的需求,用户可以绕过API路径直接访问脚本文件。
  2. 第二种配置中,最后的RewriteRule ^ - [F]会匹配所有请求,包括重写后的内部请求(比如/api/get重写为get.php后,内部请求的URI是/get.php,会被这条规则拦截返回403),导致所有请求都被禁止。

正确配置方案

以下配置可实现你的需求:仅允许访问/api/get和/api/report两个端点,将它们分别重写为get.php和report.php,同时禁止直接访问PHP脚本及其他任何路径:

RewriteEngine On

# 拒绝所有非指定API端点的请求,包括直接访问PHP脚本
RewriteCond %{REQUEST_URI} !^/api/get$
RewriteCond %{REQUEST_URI} !^/api/report$
RewriteRule ^ - [F]

# 将API端点重写为对应PHP脚本
RewriteRule ^api/get$ get.php [L]
RewriteRule ^api/report$ report.php [L]

配置说明

  • RewriteCond %{REQUEST_URI} !^/api/get$ 和 RewriteCond %{REQUEST_URI} !^/api/report$:检查请求URI是否不是指定的两个API路径,只要请求不在这两个路径内,就触发后续拒绝规则。
  • RewriteRule ^ - [F]:返回403 Forbidden状态码,拒绝不符合条件的请求。
  • 重写规则将/api/get和/api/report映射到对应PHP脚本,[L]标记确保处理完当前规则后停止后续规则执行,保证重写逻辑优先生效。

配置生效后,仅/api/get和/api/report可正常访问,直接访问PHP脚本或其他路径都会被拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:19:57