我在 14.04 即将移动到 18.04。在那个版本的 Ubuntu 中,我可以在同一个位置有一个同名的文件夹和一个文件吗?
我的用例是我有没有 .html 扩展名的 html 文件,我将其推送到 AWS S3,在那里我为一些网站提供服务。去掉 .html 扩展名使我能够拥有干净的网站网址。S3 非常乐意拥有同名的目录和文件,并且如果您导航到文件和文件夹的 URL,它们提供 html 文件而不是文件夹。
这将是一个很好的在 Ubuntu 中。我可以有一个名为“articles”的html 文件和一个名为articles 的文件夹,然后我的URL 将是“RESTful”。
example.com/articles/title
将为您提供具有该标题的文章,并example.com/articles
提供文章列表。
无论如何,AWS 已经这样做了,我只是希望 Nautilus 或 Ubuntu 可以处理这个问题,这样我就不必经历一个尴尬的编码噩梦,因为我的本地目录与我的服务器目录具有不同的名称。
这在 18.04 中是否有效,或者任何人都可以想到一个好的解决方法?
操作系统和文件系统不允许这样做
Ubuntu 及其文件系统(ext3、ext4 等)不允许在同一目录中存在同名文件和文件夹。
因此,
nautilus
不允许将文件夹重命名为现有文件名。但是,Ubuntu(一般是 GNU/Linux)文件系统是区分大小写的。您可以在同一位置拥有一个名为“文章”的文件夹和一个名为“文章”的文件。请注意文件夹名称以大写字母开头
A
,而文件名以小写字母开头a
。您可以对文件夹和文件使用任何所需的大小写约定。
替代
index.html
另一种方法是在您希望文件夹和文件具有相同名称的每个文件夹内创建一个名为的文件。命名您的 HTML 文件index.html
并将它们放在名为 eg 的文件夹中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
。感谢哈利的替代方案和其他一些观点。
问题可能与https://stackoverflow.com/questions/34550299/aws-s3-hosting-url-rewrite重复。如果您查看评论,您甚至会看到他的确切用例是从他的 URL 中删除 .html。
虽然接受的答案提供了一个有效的、可行的解决方案,但我认为这是XY 问题的一个案例。在这种情况下,您真正需要的是一个URL 重写系统,它完全消除了命名约定问题。虽然上一篇文章不适用于 AWS S3,但它很好地解释了这个概念。不幸的是,由于 S3 本身不是 Web 服务器,因此它没有 URL 重写功能,但它确实具有网页重定向,如重复问题的答案中所述,它可能能够做到这一点。