![htaccess 禁用 wordpress 搜索域 / ? s = test](https://linux22.com/image/734505/htaccess%20%E7%A6%81%E7%94%A8%20wordpress%20%E6%90%9C%E7%B4%A2%E5%9F%9F%20%2F%20%3F%20s%20%3D%20test.png)
我的 wordpress 博客被无数无意义的搜索请求轰炸。
htaccess 禁用 wordpress 搜索域 / ? s = test
搜索请求是韩语吗?
翻译如下:
所以它要么是 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>