A maneira correta de usar index.html

9

Eu tenho muitas questões sobre as quais gostaria de ouvir sua opinião, então espero que eu consiga explicá-la bem o suficiente. Devo também observar que sou iniciante equipado apenas com o conhecimento de HTML e CSS, portanto, embora tenha quase certeza de que existe uma solução simples usando PHP poderoso, isso não me ajudará .

Digamos que eu tenho meu blog pessoal no endereço example.com/blog.htmle há links para vários sub-blogs example.com/blog/math.html, example.com/blog/coding.htmletc. Portanto, minha pasta raiz contém blog.htmle blogpasta, a blogprópria pasta contém arquivos math.htmle coding.html.

Antes de tudo, aprendi (no Google Webmasters Tools ) que, para fins estéticos e de SEO, é bom unificar example.com.come example.com/index.htmladicionar _rel="canonical"_atributos à fonte do index.html. Usando alguns outros truques (como vincular ../e ./), me livrei do feio que index.htmlaparece nos meus endereços da web.

E agora me pergunto se esse truque pode ser usado não apenas para a pasta raiz, mas para qualquer pasta? Quer dizer, eu iria mudar a minha blog.htmlpara a blogpasta, renomeá-lo para o index.htmle adicione rel="canonical"a unificar example.com/blog/index.htmlcom example.com/blog/.
Esse truque mudaria o endereço do meu blog de example.com/blog.htmlpara example.com/blog/.

Não finalizado! Também estou tendo problemas com o robô do Google que indexa minhas pastas. Portanto, quando digito site:example.com/na pesquisa do google, o link para minha pasta example.com/blog/com arquivos, ícones etc. brutos aparece entre os outros resultados. Eu acho que também existem outras maneiras de corrigi-lo, mas IMHO a alteração mencionada acima também faria o truque - o index.html na pasta do blog impediria o usuário de exibir o conteúdo bruto da pasta, apenas apareceria o link certo example.com/blog/na pesquisa do Google e (espero que) _rel="canonical"_faça com que o segundo link indesejado example.com/blog/index.htmlnão apareça nos resultados da pesquisa.

Então, minhas perguntas são:

  1. É uma boa prática ter o index.htmlarquivo em todas as subpastas ou ele deve estar apenas na pasta raiz?
  2. Existem desvantagens ou problemas que podem ocorrer ao usar o segundo método " indexar em todas as pastas "?
  3. Qual das duas maneiras de estruturar o site descrito acima você prefere?
Jeyekomon
fonte
Para meu esclarecimento, os mecanismos de pesquisa consideram site.com/blog e site.com/blog/index.html como sendo 2 arquivos distintos? Se links com os dois URLs estiverem sendo usados, existe uma chance de você estar dividindo a autoridade de link / página entre dois locais?
Tanto quanto eu sei, os mecanismos de pesquisa (pelo menos o Google) os veem como dois arquivos distintos. Porque eles realmente podem ser distintos - os dois links podem diferir apenas em uma única barra. (Leia mais aqui .) E sim, se você estiver usando dois links diferentes para uma página, toda a classificação da página será dividida entre esses dois links e sua página estará efetivamente perdendo a metade de sua classificação. É por isso que sugiro a canonização do link mencionado para evitar esses vazamentos.
Jeyekomon

Respostas:

13

A razão pela qual usamos index.htmlou home.htmlderivamos dos mesmos é porque o próprio software do servidor da web realmente procura e serve. Por exemplo:

Isto é INVÁLIDO: (diretório www)

/var/www/
|_blog.html
|_blog/
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

Na verdade, isso será servido como uma página listando as pastas e arquivos. (Não é o que você quer). Você pode tentar essa estrutura, mas também criar um arquivo index.html ao lado de blog.html. Observe como ele não será exibido blog.html, a menos que você especifique http://www.site.com/blog.html) É por isso que http://www.google.com/mostra a página sem que você precise especificarhttp://www.google.com/index.html

Isto é VÁLIDO:

/var/www/
|_index.html (renamed blog.html to index.html)
|_blog/
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

Isso servirá seu blog.htmlarquivo como a página inicial. (Não lista todas as pastas / arquivos nesse diretório)

O software do servidor da web possui (na configuração) uma lista especializada de nomes de arquivos que serão servidos como a página inicial ou a página principal de uma pasta. (Na minha experiência, index.htmltem precedência sobre index.php, por isso, se você tiver index.htmle index.phpem uma pasta, o index.html é o que o público verá) É claro que tudo pode ser alterado e você pode até blog.htmlser reconhecido como um "índice".

Endereçando seu comentário:

"Este truque mudaria o endereço do meu blog de www.xxx.com/blog.html para www.xxx.com/blog/."

Isso seria feito movendo-se blog.htmlinteiramente /blog/e renomeando-o para index.html.

Sua nova estrutura seria:

/var/www/
|_blog/
  |_index.html (renamed from blog.html)
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

Isso deve servir corretamente http://www.site.com/blog/para mostrar o conteúdo do seu blog.html que renomeamos para index.htmlque o software possa defini-lo como o índice do seu diretório/blog/

Agora você também pode colocar e index.htmlarquivar na raiz do seu site http://www.site.com/(index.html)para ter links /blog/e tudo o que desejar.

Respondendo especificamente às suas perguntas em breves declarações:

  1. É uma boa prática ter o arquivo index.html em todas as subpastas ou ele deve estar apenas na pasta raiz?

    Sim, porque impede que as pessoas vejam quais arquivos estão em seus diretórios. Você pode impedir isso com um .htaccessarquivo que contémOptions -Indexes

  2. Existem desvantagens ou problemas que podem ocorrer ao usar o segundo método "indexar em todas as pastas"?

    Nada que eu possa pensar.

  3. Qual das duas maneiras de estruturar o site descrito acima você prefere?

    Normalmente, tenho um arquivo index.htmlou index.phpna raiz, subpastas com base na categoria (como forumou newsou loginetc.) e, em seguida, algum tipo de índice dentro de cada uma delas.

ionFish
fonte
Obrigado por essa resposta abrangente! Esse acesso público às minhas pastas e o fato de serem indexadas pelo google me deixa muito zangado. Agora, quando sei que não há problema com o truque "indexar em todas as pastas", mudarei meu site dessa maneira. Eu só espero que o truque rel = "canonical" funcione e todos esses índices não apareçam na pesquisa do google ...: D
Jeyekomon 28/12
6

O termo técnico para index.html é Índice de Diretório para Apache e Documento Padrão para IIS. A outra diretiva de interesse do Apache é a diretiva Opções . Conforme indicado na documentação, quando Options Indexesestá definido:

Se uma URL mapeada para um diretório for solicitada e não houver DirectoryIndex (por exemplo, index.html) nesse diretório, o mod_autoindex retornará uma lista formatada do diretório.

Quando eu configuro um site que não está usando um sistema de gerenciamento de conteúdo, minha configuração preferida é ter uma página de conteúdo por diretório. Essa página é o índice do diretório (documento padrão) para o diretório. Todos os links no site vinculam apenas o diretório e terminam com uma barra final (por exemplo, em http://example.com/blog/vez de http://example.com/blog/index.htmlou em ./blog/vez de ./blog/index.html). A barra final é importante para evitar o que é comumente chamado de redirecionamento de cortesia . (Se a barra final for omitida, tudo ainda será resolvido corretamente, mas o número de solicitações HTTP e, portanto, a largura de banda aumentará.)

Minha principal motivação para a metodologia acima é dupla. Primeiro, facilita a troca da tecnologia usada no site. Por exemplo, posso alterar uma página de index.html para index.php sem quebrar nenhum link ou listagem de mecanismo de pesquisa. Segundo, a extensão do arquivo de uma página de conteúdo é "ruído"; remover a extensão do arquivo do URL resulta em URLs mais curtos e, com sorte, mais legíveis.

Quanto a outros tipos de arquivo:

  • Todos os arquivos CSS residem em um diretório css na raiz do site.
  • Todos os arquivos de imagem residem em um diretório ou subdiretório de imagens na raiz do site.
  • Todos os arquivos JavaScript residem em um diretório de scripts na raiz do site.
  • Todos os arquivos flash e outros arquivos de filme residem em um diretório de vídeo ou subdiretório na raiz do site.

Em um servidor Apache, desabilito Options Indexespara os diretórios mencionados acima. Nos servidores Apache e IIS, não especifico um índice de diretório (documento padrão) para os diretórios mencionados acima. Portanto, uma solicitação para qualquer um dos diretórios resulta em um erro HTTP 403.

Ryan Prechel
fonte
Devido à restrição de limite de dois links, não pude incluir links para o Índice de Diretório e o Documento Padrão na minha resposta, então aqui estão eles.
Ryan Prechel