weewee 发表于 2015-7-13 09:13:55

apache‘禁止指定user_agent’ 和 ‘禁止用户通过浏览器访问某个目录’

                      禁止指定user_agent
本节介绍如何通过rewrite实现限制指定 user_agent 的请求:
即禁掉不想让那些引擎访问的请求
编辑虚拟主机配置文件
# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
(找到“域名301跳转的配置”即“rewrite的mod配置”内写入)

   RewriteCond %{HTTP_USER_AGENT} ^.*curl.*       # 表示不区分大小写
   RewriteCond %{HTTP_USER_AGENT} ^.*chrome*
   RewriteRule .* -                                                          # 把 curl 和 chrome 访问禁掉
   # apachectl -t
   Syntax OK
   # apachectl restart
这样就禁止并限定制定浏览器的访问请求,我们通过rewrite实现。
禁止用户通过浏览器访问某个目录

接着上一节,继续编辑虚拟主机配置文件

# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

通过rewrite限制访问某个目录,即让目录下的文件不能被用户通过浏览器访问。
(还是在rewrite的mod里,添加之前要把上一节的条件注释掉 “#”,便于测试是否执行成功)
RewriteCond %{REQUEST_URI} ^.*/tmp/.*
RewriteRule .* -

# apachectl -t
Syntax OK
# apachectl restart
经测试,执行成功,网址方法访问/tmp/目录以及目录下的文件
这一节的两个配置可以总况可以写成以下形式:
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.lam2.com$
    RewriteRule ^/(.*)$ http://www.lam.com/$1

    RewriteCond %{HTTP_USER_AGENT} ^.*curl.*        # 表示不区分大小写
    RewriteCond %{HTTP_USER_AGENT} ^.*chrome*
    RewriteRule .* -                                                             # 把 curl 和 chrome 访问禁掉

    RewriteCond %{REQUEST_URI} ^.*/tmp/.*
    RewriteRule .* -
</IfModule>
蓝色部分是域名301跳转;
红色部分是禁止指定user_agent;
绿色部分是禁止用户通过浏览器访问某个目录。
                   

页: [1]
查看完整版本: apache‘禁止指定user_agent’ 和 ‘禁止用户通过浏览器访问某个目录’