使用 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 错误,因为 <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
【讨论】:
假设我无法访问 httpt.conf 这种方法是阻止访问服务器上的目录的好方法吗?如果没有,还有什么比这更好的呢? @CoR 如果您无权访问服务器配置,则将其放在 htaccess 文件中(没有<Directory>
容器)是访问限制的标准方式以上是关于使用 htaccess 拒绝访问除少数文件夹外的所有文件夹的主要内容,如果未能解决你的问题,请参考以下文章
WEB API 2,Selfhost,除“localhost”外的所有内容都拒绝访问
使用 spring SecurityWebFilterChain 如何禁用/阻止除少数已知路径外的所有非 https 请求