【问题标题】:Close access to folder, but open to files关闭对文件夹的访问,但对文件打开
【发布时间】:2015-12-01 18:56:12
【问题描述】:

我有一个 apache 服务器,其中有放置星号通话记录的文件夹。 我有一个拥有 777 权限的文件夹,里面有记录。 记录名称带有随机散列,因此很难提取它们。但我需要拒绝站点用户访问此目录。 我尝试 chmod 700 到目录并在其中添加带有deny from all 的 htaccess。但这不起作用。我仍然可以转到目录并查看所有文件。 UPD1 拒绝一切开始工作,但记录也不起作用。 UPD2 怎么了,伙计们? 这是站点可用中我的 conf.file 的片段

<Directory /var/www/domain.com>
        php_admin_flag engine on
        Options -ExecCGI -Indexes
</Directory>

ExecCGI 是以前的,我决定不删除它。为什么星号重启后这不起作用?

【问题讨论】:

  • 是否列出文件?
  • 是的。它列出了文件。

标签: linux apache .htaccess


【解决方案1】:

试试

 RewriteEngine on

RewriteRule ^foldername/?$ - [F,L]

或 也可以使用redirectMatch来禁止访问文件夹

 RedirectMatch 403 ^/folder_name/?$

这将为文件夹返回 403 禁止错误。

【讨论】:

  • 我有一些问题,似乎 htaccess 在服务器上不起作用。我明天检查一下,然后接受你的回答
  • @SergeyScopin 您没有回答我的问题的原因是您可能已打开索引。如果是这种情况,您只需要Options -Indexes 来阻止列表。
  • @PanamaJack,对不起,我没有注意到你的问题。这是.htaccess,对吗?我发现这根本不起作用,因为我在那里放了随机符号,重新启动了 apache 并且站点没有失败。也许我会使用你的变种。
  • @PanamaJack 我用了你的答案,你可以回答,我会接受的。
【解决方案2】:

我认为(问题不清楚)您希望允许拥有完整 URL 的任何人能够访问文件,但阻止他们在目录中列出文件。

最简单的方法可能是在您的目录中创建一个虚拟的index.html 文件(这样网络服务器会提供该文件而不是目录内容):

$ touch /var/www/domain.com/folder_name/index.html

【讨论】:

  • 很好的解决方案。但我认为PanamaJack的解决方案更正确。
  • 定义“正确性”。一个关键区别是我的解决方案既不需要管理员访问网络服务器,也不需要有效的.htaccess 设置。它也短了 16 个字节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
相关资源
最近更新 更多