我使用的是 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 重写功能,但它确实有网页重定向正如重复问题的答案所述,它也许能够做到这一点。