使用 htaccess 拒绝访问除少数文件夹外的所有文件夹

Posted

技术标签:

【中文标题】使用 htaccess 拒绝访问除少数文件夹外的所有文件夹【英文标题】:Deny access to all folders except a few ones using htaccess 【发布时间】:2013-07-25 21:50:45 【问题描述】:

我的 webproject 存储在 /var/www/vhosts/domain.tld/httpdocs/ 中

我将在下面列出的 HTACCES 文件包含以下内容:

# Refuse direct access to all files
Order deny,allow
Deny from all
Allow from 127.0.0.1

<Directory /uploads/images/pages>
    Order Deny,Allow
    Allow from all
</Directory>

.htaccess文件存放在根目录下的文件夹files中。所以完整的路径是: /var/www/vhosts/domain.tld/httpdocs/files/

文件夹“files”的内容:

backups
    backup1.zip
    backup2.zip
    ...
mails
    mail1.html
    mail2.html
    ...
templates
    temlpate.html
    ...
uploads
    files
        manual.pdf
        ...
    images
        pages
            picture1.png
            picture2.jpg
            ...
        store
            picture1.png
            picture2.jpg
            ...
.htaccess <--- previous code block with htaccess code is for that file

我实际上想要做的是保护每个文件夹不被直接访问,除了以下内容:

上传/文件/ 上传/图片/页面/ 上传/图片/存储/

这些文件夹中的每个文件都可以直接访问

如上所述,在使用.htaccess 时,我收到 500 错误页面。当仅使用示例中的前 4 行时(无例外),代码可以正常工作。

【问题讨论】:

【参考方案1】:

您收到 500 错误,因为 &lt;Directory&gt; 容器不能在 htaccess 文件中使用(它基本上都在它所在目录的目录容器中)。您需要做的是从您的 htaccess 文件中删除 &lt;Directory&gt; 容器,并留下 Deny from all 位:

文档根目录中的 htaccess 文件:

# Refuse direct access to all files
Order deny,allow
Deny from all
Allow from 127.0.0.1

然后在uploads/files/uploads/images/pages/uploads/images/store/(以及您希望允许访问的任何其他目录)中创建一个 htaccess 文件:

Allow from all

【讨论】:

假设我无法访问 httpt.conf 这种方法是阻止访问服务器上的目录的好方法吗?如果没有,还有什么比这更好的呢? @CoR 如果您无权访问服务器配置,则将其放在 htaccess 文件中(没有 &lt;Directory&gt; 容器)是访问限制的标准方式

以上是关于使用 htaccess 拒绝访问除少数文件夹外的所有文件夹的主要内容,如果未能解决你的问题,请参考以下文章

WEB API 2,Selfhost,除“localhost”外的所有内容都拒绝访问

使用 spring SecurityWebFilterChain 如何禁用/阻止除少数已知路径外的所有非 https 请求

python 获取类中除内置方法外的所有方法名

在MySQL中显示除少数记录外的所有记录[重复]

robots.txt 允许除少数子目录外的所有子目录

使用 .htaccess 拒绝访问目录中的所有 PHP 文件