如何阻止 Apache 上所有以“?mode”开头的请求?

如何阻止 Apache 上所有以“?mode”开头的请求?

最近我的网站被黑客入侵,现在 Google 中大约有 20000 个索引链接,这些链接通过我的网站重定向到其他网站。现在我已停止所有重定向,但我的主机上有太多请求。Google 中的所有索引链接都如下所示:

  • example.com/?mode=list1124413.html

  • example.com/?mode=grid125761916.html

我想阻止所有以 开头的请求?mode,但我不知道为什么我尝试过的这些配置不起作用:

RewriteCond     %{QUERY_STRING} ".*(?:^|&)mode=(?:=|&|$)"
RewriteRule     "" "-" [F]

RedirectMatch 404 ^?mode/\d+$
RedirectMatch 404 ^mode\d+$

答案1

无法匹配查询字符串mod_alias

mod_alias旨在处理简单的 URL 操作任务。对于更复杂的任务(例如操作查询字符串),请使用mod_rewrite

工作配置mod_rewrite

RewriteEngine  On
RewriteCond    %{QUERY_STRING} "(^|&)mode="
RewriteRule    "" "-" [F]

相关内容