静态解决方案

静态解决方案

我有一个简单的网站,其中包含 index.html、该页面的图片和几个子文件夹。我想通过类似以下 URL 与朋友和家人共享文件夹访问权限:https://mydomain/folder

这曾经在不同的主机上以 http 的形式工作。我的网站现在托管在 gandi.net 上,没有 Wordpress 或任何此类网站构建器。任何直接访问文件夹的 URL 都会被“禁止”等。SSH 显示文件夹权限为 755,文件权限为 644,所以我不认为问题出在那里。

有一个 .htaccess 文件,但它所做的只是将 www.domain 重定向到 domain。如果解决方案涉及 .htaccess,我将需要具体帮助。我是一名老电脑爱好者,但网站超出了我的经验。

解决方案后编辑:.htaccess 命令词汇量庞大而复杂。以下是我在每个文件夹中放入的具体内容,以使其正常工作,后面是评论。

Options +Indexes
<FilesMatch "\.(mp3|mp4|mov|MOV|7z|zip|iso)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
<RequireAll>
    Require all granted
</RequireAll>

Options 命令打开了访问权限,但文件会在 Web 浏览器中打开。“FilesMatch”块强制将具有指定扩展名的文件下载到访问者的设备。我不知道“RequireAll”块是否有用。这是我之前尝试过的方法。

答案1

编辑:楼主解释说真正的

解决方案是在每个文件夹和站点根级别的 .htaccess 文件中添加“选项 + 索引”

因为事实证明 Gandi 的源服务器是阿帕奇

静态解决方案

您可以创建新的.html 文件,因此您绝对能够完成这项工作:

$ PREAMBLE='BEGIN {print "<!DOCTYPE html><title>hello</title><body>"}  '
$ ls -l |
    awk $PREAMBLE'{print $0"<br>"}' |
    tidy -iq  > index.html

在浏览器中导航到...name/of/folder/index.html,或者甚至只是...name/of/folder。

缺点是每当目录内容改变时您都需要记住重新运行脚本。

(为了简单起见,我没有生成hrefs ——我将这留给读者作为练习。)

动态解决方案

首先,这里涉及什么 Web 服务器?我们来询问一下 gandi.net。

$ curl -i https://www.gandi.net/en
HTTP/2 200 
server: nginx
...

很好,现在我们知道要查阅哪份文献了。

我真心希望 Gandi 已经ngx_http_autoindex_module启用。

nginx.conf配置文件中我们想要这样的内容:

location /name/of/folder/ {
    autoindex on;
}

尝试调整.htaccess文件以启用自动索引。如果您的编辑没有效果,那么您必须与 Gandi 管理员聊天以了解模块是否已启用以及您应该进行哪些更改。至少他们的文档表明他们预计应该启用该模块,但该文档描述的设置与您的不同,使用 Apache 而不是 Nginx。(编辑:我的猜测是错误的 - 结果是 Apache 正在读取您的 .html 文件。)

相关内容