操作系统和文件系统不允许这样做

操作系统和文件系统不允许这样做

我使用的是 14.04 版本,即将升级到 18.04 版本。在该版本的 Ubuntu 中,我可以在同一位置使用同名的文件夹和文件吗?

我的用例是,我有一些不带 .html 扩展名的 html 文件,我将其推送到 AWS S3,在那里为一些网站提供服务。省去 .html 扩展名让我可以为网站提供干净的 URL。S3 非常乐意拥有同名的目录和文件,幸运的是,如果您导航到包含文件和文件夹的 URL,它们会提供 html 文件而不是文件夹。

在 Ubuntu 中拥有这个功能会很不错。我可以有一个名为“articles”的 html 文件和一个名为 articles 的文件夹,然后我的 URL 就会是“RESTful”的。

example.com/articles/title将为您提供具有该标题的文章,并example.com/articles提供文章列表。

无论如何,AWS 已经做到了这一点,我只是希望 Nautilus 或 Ubuntu 可以处理这个问题,这样我就不必经历尴尬的编码噩梦,因为我的本地目录与服务器目录有不同的名称。

这在 18.04 中有效吗?或者有人能想到一个好的解决方法吗?

答案1

操作系统和文件系统不允许这样做

Ubuntu 及其文件系统(ext3、ext4 等)不允许在同一目录中存在同名的文件和文件夹。

因此,nautilus不允许将文件夹重命名为现有文件名。

但是,Ubuntu(一般为 GNU/Linux)文件系统区分大小写。您可以有一个名为文章以及一个名为文章在同一位置。请注意,文件夹名称以大写字母 开头A,而文件名以小写字母 开头a

您可以对文件夹和文件使用任何您想要的 CaPiTaLiZaTion 约定。

替代

另一种方法是在每个文件夹中创建一个名为 的文件,index.html您希望文件夹和文件具有相同的名称。命名您的 HTML 文件index.html并将它们放在名为 的文件夹中example.com/articles/title,因此完整路径为example.com/articles/title/index.html,也可以实现您的要求。

当有人输入时,https://example.com/articles/title网络服务器将提供index.html页面,而浏览器不会显示index.html。它只会显示https://example.com/articles/title

类似地,您可以创建一个名为 的文件,https://example.com/article/index.html当有人输入 时,它会显示您想要的内容https://example.com/article

谢谢哈利寻找替代方案和其他一些观点。

答案2

问题可能重复https://stackoverflow.com/questions/34550299/aws-s3-hosting-url-rewrite。如果你看一下评论,你甚至会看到他确切的用例是从他的 URL 中删除 .html。

虽然接受的答案提供了有效、可行的解决方案,但我认为这是XY问题。在这种情况下,你真的需要URL 重写系统,它完全解决了命名约定问题。虽然上一篇文章不适用于 AWS S3,但它很好地解释了这个概念。不幸的是,由于 S3 本身不是 Web 服务器,它没有 URL 重写功能,但它确实有网页重定向正如重复问题的答案所述,它也许能够做到这一点。

相关内容