如何拒绝服务器级别的请求,而不是将它们传递给应用程序?

时间:2012-05-27 22:11:50

标签: apache .htaccess drupal

是否可以在应用程序目录中放置一些内容,以便在服务器级别拒绝某些请求,并且根本不到达应用程序(在我的情况下是Drupal),并且不要使用应用程序日志垃圾邮件“找不到页面”?

我认为htaccess对“禁止”文件的请求会被服务器拒绝而不会被进一步处理,但它们不是。

示例:

假设我自己的网站域名是example.com。 htaccess有以下几行(这是一个简化的设置,以防止热链接jpg图像):

RewriteCond %{HTTP_HOST} ^example\.com [NC]
  RewriteCond %{HTTP_REFERER} !^$
  RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?example\.com [NC]
  RewriteRule \.(jpg)$ - [F,NC,L]

它可以工作,例如,如果我转到http://altlab.com/hotlinking.html并从我的example.com网站上放置一个现有的jpg地址,它就说无法显示图像。所以它被阻止了,好的。但上述请求也反映在Watchdog(Drupal的内部日志)中,这是不行的。

是否有一种方法可以拒绝Apache服务器从外部域获取jpg文件的请求,而不是将这些请求进一步传递给应用程序?

1 个答案:

答案 0 :(得分:0)

您需要使用4XX状态代码重定向。

RewriteRule ... [...,R=400]