htaccess 禁用 wordpress 搜索域 / ? s = test

htaccess 禁用 wordpress 搜索域 / ? s = test

我的 wordpress 博客被无数无意义的搜索请求轰炸。

htaccess 禁用 wordpress 搜索域 / ? s = test

无意义的 wordpress 搜索请求

搜索请求是韩语吗?

wordpress_senseless_searches_result

翻译如下:

wordpress_senseless_searches_result_translated

所以它要么是 DDoS,要么是 SPAM。

所涉及的 IP 为:

主机 66.249.64.24 24.64.249.66.in-addr.arpa 域名指针 crawl-66-249-64-24.googlebot.com。

主机 66.249.64.26 26.64.249.66.in-addr.arpa 域名指针 crawl-66-249-64-26.googlebot.com。

iptables 出了问题,我无法阻止通过 IP 发出的请求。

请求如下:

domain.com/?s=StrangeKoreanSearchPattern

我需要在 .htaccess 中使用什么正则表达式来使所有搜索都受到密码保护?

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

<FilesMatch "wp-login.php">
    AuthName "WordPress Admin"
    AuthType Basic
    AuthUserFile /home/admin/web/.htpasswd
    require valid-user
</FilesMatch>

# DOES NOT WORK :-|    
<FilesMatch "index\.php\?s=.*">
    AuthName "WordPress Admin"
    AuthType Basic
    AuthUserFile /home/admin/web/.htpasswd
    require valid-user
</FilesMatch>

谢谢!

答案1

经过一些研究和测试后,我认为以下 htaccess 条目应该有效:

<If "%{QUERY_STRING} =~ /.?s=/">
  AuthName "WordPress Admin"
  AuthType Basic
  AuthUserFile /home/admin/web/.htpasswd
  require valid-user
</If>

来源:https://stackoverflow.com/questions/31903448/htaccess-deny-specific-get-parameter

为了阐明这在做什么:如果查询字符串(“domain.com/”后以“?”开头的字符串)包含“?s=”,则需要从 .htpasswd 文件中获取有效用户。

答案2

感谢您的回答,.htaccess 和 regex 是两个截然不同的东西。

修改了你的答案,现在看起来工作正常。#谢谢!

<If "%{QUERY_STRING} =~ /^.?s=/">
  AuthName "WordPress Admin"
  AuthType Basic
  AuthUserFile /home/admin/web/.htpasswd
  require valid-user
</If>

<If "%{QUERY_STRING} =~ /^.?search=/">
  AuthName "WordPress Admin"
  AuthType Basic
  AuthUserFile /home/admin/web/.htpasswd
  require valid-user
</If>

相关内容