13

我的网络项目存储在 /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/

文件夹“文件”的内容:

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 行(无例外)时,代码工作得很好。

4

1 回答 1

19

您收到 500 错误,因为<Directory>容器不能在 htaccess 文件中使用(它基本上都在它所在目录的目录容器内)。您需要做的是<Directory>从您的 htaccess 文件中删除容器,并留下该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
于 2013-07-25T20:37:17.343 回答