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

时间:2013-07-25 19:55:46

标签: .htaccess directory

我的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文件存储在根目录下的文件夹文件中。所以完整的路径是: /var/www/vhosts/domain.tld/httpdocs/files /

文件夹&#34;文件&#34;的内容:

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 个答案:

答案 0 :(得分:14)

您收到500错误,因为<Directory>容器无法在htaccess文件中使用(该文件基本上都在其所在目录的目录容器中)。您需要做的是从htaccess文件中删除<Directory>容器,并保留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