Uma pasta e um arquivo com o mesmo nome no mesmo local [duplicado]

5

Estou em 14.04 prestes a subir para o 18.04. Nessa versão do Ubuntu posso ter uma pasta e um arquivo no mesmo local com o mesmo nome?

Meu caso de uso é que eu tenho arquivos html sem a extensão .html, que faço push up para o AWS S3, onde atendo alguns sites. Deixar a extensão .html permite que eu tenha URLs limpos para os sites. E o S3 está perfeitamente feliz em ter diretórios e arquivos com o mesmo nome e, felizmente, eles veiculam o arquivo html em vez de uma pasta se você navegar para o URL que é um arquivo e uma pasta.

Isso seria bom ter no Ubuntu. Eu poderia ter um arquivo html chamado 'articles' e uma pasta chamada articles, e então meus URLs seriam "RESTful".

example.com/articles/title forneceria o artigo com esse título e example.com/articles forneceria uma lista de artigos.

De qualquer forma, a AWS já faz isso, eu esperava que o Nautilus, ou o Ubuntu, pudesse lidar com isso, então não preciso passar por um pesadelo de codificação estranho, onde meus diretórios locais têm nomes diferentes dos diretórios do meu servidor.

Isso funciona em 18.04 ou alguém pode pensar em uma boa alternativa?

    
por Costa 13.04.2018 / 20:20

2 respostas

14

O sistema operacional e o sistema de arquivos não permitem isso

O Ubuntu e seus sistemas de arquivos (ext3, ext4, etc.) não permitem um arquivo e uma pasta com nomes idênticos no mesmo diretório.

Portanto, nautilus não permite renomear uma pasta para um nome de arquivo existente.

No entanto, os sistemas de arquivos do Ubuntu (GNU / Linux em geral) fazem distinção entre maiúsculas e minúsculas. Você pode ter uma pasta chamada Artigos e um arquivo chamado artigos no mesmo local. Observe que o nome da pasta começa com um% maiA, enquanto o nome do arquivo começa com um pequeno a .

Você pode usar qualquer convenção de CaPiTaLiZaTion que desejar para suas pastas e arquivos.

Uma alternativa

Uma alternativa é criar um arquivo chamado index.html dentro de cada pasta em que você deseja que a pasta e o arquivo tenham o mesmo nome. Nomeando seu arquivo HTML index.html e colocando-os em uma pasta chamada, example.com/articles/title , então o caminho completo é example.com/articles/title/index.html , também irá realizar o que você está pedindo.

Quando se digita https://example.com/articles/title , o servidor web exibirá a página index.html e os navegadores não mostrarão o index.html . Ele mostrará apenas https://example.com/articles/title .

Da mesma forma, você pode ter um arquivo chamado https://example.com/article/index.html para mostrar o que deseja quando se digita https://example.com/article .

Obrigado a Harry pela alternativa e alguns outros pontos.

    
por user68186 13.04.2018 / 20:43
1

A pergunta é uma possível duplicação do link . Se você olhar nos comentários, verá que o caso de uso preciso dele está removendo o .html de seus URLs.

Embora a resposta aceita forneça uma solução válida e funcional, acho que esse é um caso do problema XY . Nesse caso, o que você realmente precisa é um sistema de redação de URL , que dispensa o problema da convenção de nomenclatura. Embora o artigo anterior não se aplique ao AWS S3, ele explica bastante bem o conceito. Infelizmente, como o S3 não é um servidor da web em si, ele não tem a funcionalidade de regravação de URL, mas ele tem Redirecionamentos de páginas da Web que, conforme declarado na resposta da pergunta duplicada, podem fazer isso.

    
por Bjonnfesk 14.04.2018 / 08:15