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

Apache 2.2.x下使用mod_rewrite拦截恶意脚本请求的配置失效问题求助

Apache 2.2.x下使用mod_rewrite拦截恶意脚本请求的配置失效问题求助

嘿,我来帮你排查这个问题!你作为mod_rewrite新手犯的这个错其实挺常见的,咱们直接看核心问题:

你的RewriteCond里用了${REQUEST_URI},但Apache的mod_rewrite服务器变量是用**百分号(%)**开头的,不是美元符号($)!美元符号一般用来引用RewriteRule里的捕获组,而服务器变量的正确写法是%{REQUEST_URI}。

把这个小错误修正后,你的配置就能正常工作了,修改后的代码如下:

<IfModule mod_rewrite.c>
    RewriteEngine On
    # 修正变量为%{REQUEST_URI},NC表示忽略大小写匹配
    RewriteCond %{REQUEST_URI} evildoing.php [NC]
    # 返回403 Forbidden错误,L表示终止后续规则执行
    RewriteRule ^(.*)$ - [F,L]
</IfModule>

另外补充两个小建议,让你的拦截逻辑更严谨:

  • 如果想精准匹配以evildoing.php结尾的请求,可以把Cond规则改成%{REQUEST_URI} /evildoing.php$ [NC],加上结尾锚点$和开头的斜杠,避免误拦截比如myevildoing.php这类无关请求
  • 如果还要拦截带参数的请求(比如evildoing.php?foo=bar),当前配置已经能覆盖,因为REQUEST_URI包含路径部分;如果需要针对参数做额外限制,可以再加一条RewriteCond %{QUERY_STRING} 匹配规则

这样调整后,就能实时给请求恶意脚本的用户返回403错误啦,比动态维护IP黑名单要及时得多~

备注:内容来源于stack exchange,提问作者Johnny Canuck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:53:13