web-dev-qa-db-fra.com

Un dossier et un fichier du même nom au même endroit

Je suis sur le 14.04 sur le point de passer à 18.04. Dans cette version d'Ubuntu, puis-je avoir un dossier et un fichier au même endroit avec le même nom?

Mon cas d'utilisation est que j'ai des fichiers HTML sans l'extension .html, que je pousse jusqu'à AWS S3, où je sers quelques sites Web. Laisser l'extension .html me permet d'avoir des URLs propres pour les sites Web. Et S3 est parfaitement heureux de disposer de répertoires et de fichiers portant le même nom. Heureusement, ils servent le fichier html plutôt qu'un dossier si vous accédez à l'URL qui est un fichier et un dossier.

Ce serait un plaisir d'avoir à Ubuntu. Je pourrais avoir un fichier html appelé "articles" et un dossier appelé articles, puis mes URL seraient "RESTful".

example.com/articles/title vous donnerait l'article avec ce titre et example.com/articles vous servirait une liste d'articles.

Quoi qu'il en soit, AWS le fait déjà. J'espérais simplement que Nautilus ou Ubuntu pourrait le gérer, de sorte que je n'ai pas à passer par un cauchemar de codage fastidieux où mes répertoires locaux ont des noms différents de ceux de mes serveurs.

Est-ce que cela fonctionne dans 18.04 ou quelqu'un peut-il penser à une bonne solution de contournement?

5
Costa

Le système d'exploitation et le système de fichiers ne le permettent pas

Ubuntu et ses systèmes de fichiers (ext3, ext4, etc.) n'autorisent pas les fichiers et les dossiers portant le même nom dans le même répertoire.

Par conséquent, nautilus ne permet pas de renommer un dossier en un nom de fichier existant.

Cependant, les systèmes de fichiers Ubuntu (GNU/Linux en général) sont sensibles à la casse. Vous pouvez avoir un dossier appelé Articles et un fichier appelé articles dans le même endroit. Notez que le nom du dossier commence par une majuscule A, tandis que le nom du fichier commence par un petit a.

Vous pouvez utiliser les conventions de CaPiTaLiZaTion de votre choix pour vos dossiers et fichiers.

Une alternative

Une alternative consiste à créer un fichier nommé index.html à l'intérieur de chaque dossier dans lequel vous souhaitez que le dossier et le fichier aient le même nom. Nommer votre fichier HTML index.html et le placer dans un dossier appelé, par exemple. example.com/articles/title, donc le chemin complet est example.com/articles/title/index.html, réalisera également ce que vous demandez.

Quand on tape https://example.com/articles/title, le serveur Web servira la page index.html et les navigateurs n’afficheront pas le index.html. Il ne montrera que https://example.com/articles/title.

De même, vous pouvez avoir un fichier nommé https://example.com/article/index.htmlpour montrer ce que vous voulez quand on tape https://example.com/article.

Merci à Harry pour l’alternative et quelques autres points.

14
user68186

La question est une copie possible de https://stackoverflow.com/questions/34550299/aws-s3-hosting-url-rewrite . Si vous regardez dans les commentaires, vous verrez même que son cas d'utilisation précis consiste à supprimer le fichier .html de ses URL.

Alors que la réponse acceptée fournit une solution valide et opérationnelle, je pense que ceci est un cas du problème XY . Dans ce cas, ce dont vous avez vraiment besoin est un système de réécriture d'URL , qui supprime totalement le problème de la convention de dénomination. Bien que l'article précédent ne s'applique pas à AWS S3, il explique assez bien le concept. Malheureusement, étant donné que S3 n’est pas un serveur Web en tant que tel, il n’a pas de fonctionnalité de réécriture d’URL, mais il a Webpage Redirects qui, comme indiqué dans la réponse à la question en double, pourrait le faire. .

2
Bjonnfesk