【问题标题】:How do I forbid (403) an entire directory with WordPress .htaccess?如何使用 WordPress .htaccess 禁止 (403) 整个目录?
【发布时间】:2015-11-09 04:35:03
【问题描述】:

似乎有人在另一个网站的图片参考中拼错了域名。这导致我的网站因请求不存在的图像而受到猛烈抨击。我的服务器没有能力处理这个问题。它不断地发送 404(未找到)响应,最大限度地利用我的资源并使我的托管服务提供商相当不安。

其他网站的管理员没有响应。

我认为我需要发送 403(禁止)而不是 404(未找到)响应。

我的服务器收到的请求如下所示:

GET http://www.mywebsite.com/theirdirectoryname/their-file-name.jpg HTTP/1.1

因此,我尝试将以下内容添加到我的 .htaccess 文件中:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .*(theirdirectoryname).* - [F]
</IfModule>

这不起作用。我的服务器仍然响应 404 而不是 403。

谁能看出我做错了什么?

我的服务器正在运行 WordPress。所以我的 htaccess 中有一个 WordPress 部分,以及一个 W3TC 浏览器缓存部分,如果这有什么不同的话。

【问题讨论】:

  • 您是否考虑过添加图像作为该文件名,然后可能将 chmod 更改为 440?
  • 我有点担心我的服务器也无法处理这个问题。我经常在一秒钟内收到几个请求。我的理解是 403 响应占用的资源最少?
  • 您是否试图禁止访问整个目录(从浏览器和机器人)?如果是这样,您可以在该目录中创建一个 .htaccess 文件,其中包含“全部拒绝”。
  • 现在已经完成了。我的服务器仍然返回 404 而不是 403。
  • 你把这个指令放在哪里了?该指令需要放在 .htaccess 文件的最顶部。但应该只是:RewriteRule ^theirdirectoryname - [F](并不是说这实际上会有所作为)。这可能是因为 WordPress 正在处理此请求,您的资源已被最大化。 404 本身应该不是问题。

标签: wordpress .htaccess mod-rewrite http-status-code-404 http-status-code-403


【解决方案1】:

您可能需要您的服务器管理员为您放置规则,大多数共享帐户会忽略您拥有的 .htaccess 规则。

但是这里有几个不同的选项,

  1. 使用 htaccess 阻止用户 ip(你会发现第一行已经存在,将第二行放在它下面)

    Order Deny,Allow
    Deny from 777.8.3.2
    
  2. 使用 apaches httpd.conf 文件完全防止任何图像的窃取

    SetEnvIfNoCase Referer "^http://www\.yoururl\.com/" banimages=1
    SetEnvIfNoCase Referer "^http://yoururl\.com/" banimages=1
    SetEnvIfNoCase Referer "^$" banimages=1
      <FilesMatch "\.(gif|png|jpe?g)$">
         Order Allow,Deny
         Allow from env=banimages
      </FilesMatch>
    

我可能会推荐第二个,你不想成为你在线图像的内容交付服务。

【讨论】:

  • “大多数共享帐户会忽略您拥有的 .htaccess 规则” - 尽管 OP 已经在 .htaccess 中使用带有 mod_rewrite 指令的 WordPress,这些指令似乎工作正常。 (?) Allow from env 只是检查环境变量的存在,你不能检查它的值。 Allow from env=banimages=1 总是会失败。它应该只是Allow from env=banimages(但allowimages 在这种情况下不是更合适的变量名吗?)。
  • @w3d 是的,大多数共享主机确实在 apache 中设置了优先于 .htaccess 规则的规则。您通常可以制作一些尚未定义的模组,或者它已经为 wordpress 托管设置。您可能会在那里看到 .htaccess 文件,但它可能会被完全忽略。 php.ini 等也是如此。
  • 好吧,如果主机阻止 .htaccess 并在更高级别处理 WordPress 内容,那就太糟糕了! :) 引用的文档还从 Allow from env 指令中省略了 =1
猜你喜欢
  • 2013-10-17
  • 2016-11-27
  • 2020-09-26
  • 2018-10-02
  • 2021-02-05
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2018-05-30
相关资源
最近更新 更多