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

如何在Vercel防火墙自定义规则中正确拦截所有*.php请求?

解决Vercel防火墙拦截PHP请求无日志、仍计有效流量的问题

核心问题根源

你之前的规则要么未指定**请求路径(Request Path)**这个精准匹配字段,要么匹配语法不符合Vercel防火墙的规则要求,导致拦截行为未被防火墙系统追踪,反而被判定为常规边缘请求。


正确的PHP请求拦截规则配置

以下是两种经过验证的有效规则,直接复制配置即可:

规则1:精准拦截所有.php结尾的请求(推荐)

  • 匹配类型:matches
  • 目标字段:Request Path
  • 匹配值:\.php$
  • 执行动作:Deny

正则说明:\.转义匹配点号(避免正则中.匹配任意字符),$匹配路径结尾,确保只拦截真正以.php收尾的请求,比如/test.php、/api/login.php都会被拦截,不会误判/php-docs这类不含后缀的路径。

规则2:扩展拦截PHP衍生后缀请求

如果需要同时拦截.php5、.phtml这类PHP相关后缀,可使用:

  • 匹配类型:matches
  • 目标字段:Request Path
  • 匹配值:\.(php\d?|phtml)$
  • 执行动作:Deny

之前规则无效的原因解析

  1. request -> contains -> '/[slug].php':[slug]是Next.js的路由占位符,Vercel防火墙不识别该语法,只会当作普通字符串匹配,仅拦截路径包含/[slug].php的请求,完全不符合需求。
  2. request -> contains -> '/*.php':contains匹配中*是普通字符,不是通配符,只会拦截路径包含/*.php的请求,几乎不会触发。
  3. 正则规则错误:你之前的正则存在空格( phtml中的空格)、未转义点号(.在正则中匹配任意字符),且未指定匹配Request Path字段,导致防火墙在整个请求内容中匹配,而非仅路径。

验证规则有效性

配置后按以下步骤确认:

  • 浏览器访问你的域名/任意名称.php,应返回403 Forbidden。
  • 查看Vercel防火墙日志,该请求会被标记为Blocked,并关联你配置的规则名称。
  • 观察边缘请求统计,这类PHP请求不再计入有效请求量。

额外优化:拦截WordPress扫描流量

配合以下规则,进一步减少机器人扫描:

  • 规则:Request Path -> contains -> /wp-admin -> Deny
  • 规则:Request Path -> contains -> /wp-includes -> Deny

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:45:07