首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.htaccess不阻塞指定的用户代理

.htaccess不阻塞指定的用户代理
EN

Stack Overflow用户
提问于 2015-05-05 21:08:16
回答 1查看 2K关注 0票数 0

更新我找到了Firefox : User,它允许我使用不同的用户代理进行测试。令人惊讶的是,它阻止了用户代理。我想知道为什么在我第一次尝试通过.htaccess阻止时发生了12次左右的请求。页面请求是否已经在处理中?至少他们在工作。

在我的.htaccess中,我有一个php脚本,它检查是否有违规的用户代理字符串,并动态地写入.htaccess一个RewriteCond,以立即阻止用户代理。

我试图通过编写以下条件Mozilla/5.0 (Auto Shell Spider)来阻止代理RewriteCond %{HTTP_USER_AGENT} ^.*(Mozilla/5\.0\ \(Auto\ Shell\ Spider\)).*$ [NC],但是我的日志显示用户代理继续访问页面(在接下来的2秒内另一个10+ )。我已经用preg_match()测试了规则,它匹配,因此应该阻止用户代理。这是怎么回事?我的印象是我不需要在AND中使用RewriteCond,因为每个RewriteRule都有自己的RewriteRule。我不认为有缓存的.htaccess -更改应该立即生效。php regex与htaccess不同吗?

任何帮助都将不胜感激。

下面是一组更完整的.htaccess指令:

代码语言:javascript
复制
RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php

# Block spiders: 
    RewriteCond %{HTTP_USER_AGENT} ^.*(Baiduspider|360Spider|Sogou|Sosospider|Yandex|NaverBot|Yeti|moget|ichiro|RedBot|AhrefsBot|xovibot).*$ [NC]
    RewriteRule .* - [R=403,L]
Deny from 59.61.184.100
Deny from 59.152.240.71

# Block User Agent -  NOT WORKING?
RewriteCond %{HTTP_USER_AGENT} ^.*(Mozilla/5\.0\ \(Auto\ Shell\ Spider\)).*$ [NC]
RewriteRule .* - [R=403,L]

当使用php preg_match时,

代码语言:javascript
复制
$text =  "Mozilla/5.0 (Auto Shell Spider)";
preg_match('`^.*(Mozilla/5\.0\ \(Auto\ Shell\ Spider\)).*$`', $text, $acell);    
echo "<pre>";var_dump($acell);echo "</pre>";    

我得到的匹配如下:

代码语言:javascript
复制
array (size=2)
  0 => string 'Mozilla/5.0 (Auto Shell Spider)' (length=31)
  1 => string 'Mozilla/5.0 (Auto Shell Spider)' (length=31)
EN

回答 1

Stack Overflow用户

发布于 2015-05-05 21:38:14

尝试像这样重新排序您的规则:

代码语言:javascript
复制
Deny from 59.61.184.100
Deny from 59.152.240.71

RewriteEngine On

# Block spiders: 
RewriteCond %{HTTP_USER_AGENT} ^.*(Baiduspider|360Spider|Sogou|Sosospider|Yandex|NaverBot|Yeti|moget|ichiro|RedBot|AhrefsBot|xovibot).*$ [NC]
RewriteRule ^ - [R=403,L]

# Block User Agent -  NOT WORKING?
RewriteCond %{HTTP_USER_AGENT} "Mozilla/5\.0 \(Auto Shell Spider\)" [NC]
RewriteRule ^ - [R=403,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30063275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档