【问题标题】:Deny access to all folders except a few ones using htaccess使用 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 行时(无例外),代码可以正常工作。

【问题讨论】:

    标签: .htaccess directory


    【解决方案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; 容器)是访问限制的标准方式
    猜你喜欢
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2014-01-08
    • 1970-01-01
    相关资源
    最近更新 更多