mod_rewrite 阻止请求的快速且低资源方式
mod_rewrite Fast and low resource way to block the request
我使用以下规则来阻止基于某些使用 modRewrite 的用户代理的请求
RewriteCond %{HTTP_USER_AGENT} ^.*(SCspider|PetalBot|ZyBorg).*$ [NC]
RewriteRule ^.*$ - [F,L]
或
RewriteCond %{HTTP_USER_AGENT} ^.*(SCspider|PetalBot|ZyBorg).*$ [NC]
RewriteRule .* - [F,L]
但我需要知道是否有更好的方法(快速&快速)和更少的资源消耗 block/drop 请求
感谢您的帮助
使用您显示的示例尝试执行以下操作。以下应该比您尝试的更快。
RewriteCond %{HTTP_USER_AGENT} (?:SCspider|PetalBot|ZyBorg) [NC]
RewriteRule ^ - [F,L]
改进建议:
- 我们需要在条件部分使用
.*
,因为任何包含这些字符串的内容都应该被阻止,您可以将其更改为 \b(?:SCspider|PetalBot|ZyBorg)\b
以避免部分匹配(以防万一)。
- 那么您将在不需要的情况下创建捕获组,因为它以后不会在任何地方使用。
- 在 RewriteRule 部分我们也不需要使用
.*
我们可以简单地使用 ^
来避免匹配所有内容,因为无论如何我们在条件部分进行匹配。
我使用以下规则来阻止基于某些使用 modRewrite 的用户代理的请求
RewriteCond %{HTTP_USER_AGENT} ^.*(SCspider|PetalBot|ZyBorg).*$ [NC]
RewriteRule ^.*$ - [F,L]
或
RewriteCond %{HTTP_USER_AGENT} ^.*(SCspider|PetalBot|ZyBorg).*$ [NC]
RewriteRule .* - [F,L]
但我需要知道是否有更好的方法(快速&快速)和更少的资源消耗 block/drop 请求
感谢您的帮助
使用您显示的示例尝试执行以下操作。以下应该比您尝试的更快。
RewriteCond %{HTTP_USER_AGENT} (?:SCspider|PetalBot|ZyBorg) [NC]
RewriteRule ^ - [F,L]
改进建议:
- 我们需要在条件部分使用
.*
,因为任何包含这些字符串的内容都应该被阻止,您可以将其更改为\b(?:SCspider|PetalBot|ZyBorg)\b
以避免部分匹配(以防万一)。 - 那么您将在不需要的情况下创建捕获组,因为它以后不会在任何地方使用。
- 在 RewriteRule 部分我们也不需要使用
.*
我们可以简单地使用^
来避免匹配所有内容,因为无论如何我们在条件部分进行匹配。