web-dev-qa-db-fra.com

La bonne façon d'utiliser index.html

J'ai de nombreuses questions sur lesquelles j'aimerais connaître votre opinion. J'espère donc pouvoir l'expliquer assez bien. Je dois aussi noter que je ne suis débutant qu'avec la connaissance du HTML et du CSS. Bien que je sois presque sûr qu’il existe une solution simple utilisant un puissant PHP, , elle ne m’aide en rien. .

Disons que j'ai mon blog personnel à l'adresse example.com/blog.html et qu'il existe des liens vers plusieurs sous-blogs example.com/blog/math.html, example.com/blog/coding.html etc. Ainsi, mon dossier racine contient blog.html et blog, le dossier blog contient lui-même les fichiers math.html et coding.html.

Tout d’abord, j’ai appris (de Google Webmasters Tools ) qu’il était bon, pour le référencement et l’esthétique, d’unifier example.com.com et example.com/index.html en ajoutant _rel="canonical"_ à l’attribut source du index.html. En utilisant quelques astuces (comme créer des liens vers ../ et ./), je me suis débarrassé du vilain index.html qui apparaît dans mes adresses Web.

Et maintenant, je me demande si cette astuce peut être utilisée non seulement pour le dossier racine mais pour tous les dossiers ? Je veux dire, je déplacerais mon blog.html dans le dossier blog, le renommerais en index.html et ajouter rel="canonical" pour unifier example.com/blog/index.html avec example.com/blog/ .
Cette astuce changerait l'adresse de mon blog de example.com/blog.html en example.com/blog/.

Pas terminé! Je rencontre également des problèmes avec le robot Google qui indexe mes dossiers. Ainsi, lorsque je tape site:example.com/ dans la recherche Google, le lien vers mon dossier example.com/blog/ avec des fichiers bruts, des icônes, etc. apparaît parmi les autres résultats. Je suppose qu’il existe également d’autres moyens de remédier à ce problème, mais à mon humble avis, le changement mentionné ci-dessus ferait également l'affaire: le index.html dans le dossier du blog empêcherait l'utilisateur de consulter le contenu brut réel de Dans ce dossier, seul le bon lien example.com/blog/ apparaît dans la recherche google et (j’espère que) _rel="canonical"_ ferait en sorte que le second lien non souhaité example.com/blog/index.html ne figure pas dans les résultats de la recherche.

Donc mes questions sont:

  1. Est-ce une bonne pratique d’avoir le fichier index.html dans chaque sous-dossier ou est-il prévu de ne figurer que dans le dossier racine?
  2. Existe-t-il des inconvénients ou des problèmes pouvant survenir lors de l’utilisation de la deuxième méthode "index dans chaque dossier"?
  3. Laquelle des deux manières de structurer le site Web décrite ci-dessus préférez-vous ?
8
Jeyekomon

Si nous utilisons index.html ou home.html ou leurs dérivés, c'est parce que le logiciel du serveur Web lui-même le recherche et le sert. . Par exemple:

C'est INVALID: (www-directory)

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

Cela servira en fait comme une page listant les dossiers et les fichiers. (Pas ce que tu veux). Vous pouvez essayer cette structure, mais également créer un fichier index.html à côté de blog.html. Remarquez comment il ne servira pas blog.html sauf si vous spécifiez http://www.site.com/blog.html) C'est pourquoi http://www.google.com/ affiche la page sans que vous ayez à spécifier http://www.google.com/index.html

C'est valide:

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

Cela servira votre fichier blog.html en tant que page d'accueil. (Ne répertorie pas tous les dossiers/fichiers de ce répertoire)

Le logiciel du serveur Web contient (dans la configuration) une liste spécialisée de noms de fichiers qui serviront de page d'accueil ou de page principale d'un dossier. (Selon mon expérience, index.html a priorité sur index.php, donc si vous avez index.html et index.php dans un dossier, le fichier index.html est ce que le public verra.) peuvent tous être modifiés, et vous pouvez même définir blog.html pour être reconnu comme un "index".

Adressant votre commentaire:

"Cette astuce changerait l'adresse de mon blog de www.xxx.com/blog.html à www.xxx.com/blog/."

Cela se ferait en déplaçant entièrement blog.html dans /blog/ et en le renommant index.html.

Votre nouvelle structure serait:

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

Cela devrait servir correctement http://www.site.com/blog/ pour afficher le contenu de votre blog.html que nous avons renommé en index.html afin que le logiciel puisse le définir comme index de votre répertoire /blog/

Vous êtes également libre maintenant de placer le fichier index.html à la racine de votre site http://www.site.com/(index.html) pour avoir des liens vers /blog/ et tout ce que vous souhaitez.

Répondant spécifiquement à vos questions dans de courtes déclarations:

  1. S'agit-il d'une bonne pratique d'avoir le fichier index.html dans chaque sous-dossier ou est-il destiné uniquement au répertoire racine?

    Oui, car cela empêche les gens de voir quels fichiers se trouvent dans vos répertoires. Vous pouvez éviter cela avec un fichier .htaccess contenant Options -Indexes

  2. Y a-t-il des inconvénients ou des problèmes qui peuvent survenir lors de l'utilisation de la seconde méthode, "index dans chaque dossier"?

    Aucune que je puisse penser.

  3. Laquelle des deux manières de structurer le site Web décrite ci-dessus préférez-vous?

    J'ai généralement un fichier index.html ou index.php à la racine, des sous-dossiers basés sur la catégorie (tels que forum ou news ou login etc.), puis certains sorte d'index à l'intérieur de chacun de ceux-ci.

12
ionFish

Le terme technique pour index.html est Index des répertoires pour Apache et Document par défaut pour IIS. L'autre directive d'intérêt Apache est la directive Options . Comme indiqué dans la documentation, lorsque Options Indexes est défini:

Si une URL mappée à un répertoire est demandée et qu'il n'y a pas DirectoryIndex (par exemple, index.html) dans ce répertoire, alors mod_autoindex renverra une liste formatée du répertoire.

Lorsque je configure un site Web qui n'utilise pas de système de gestion de contenu, ma configuration préférée consiste à avoir une page de contenu par répertoire. Cette page est l'index du répertoire (document par défaut) du répertoire. Tous les liens du site renvoient uniquement au répertoire et se terminent par une barre oblique finale (par exemple, http://example.com/blog/ au lieu de http://example.com/blog/index.html ou ./blog/ au lieu de ./blog/index.html). Le slash final est important pour éviter ce qui est communément appelé un redirection de courtoisie . (Si la barre oblique finale est omise, tout est toujours résolu correctement, mais le nombre de requêtes HTTP et donc la bande passante augmentent.)

Ma principale motivation pour la méthodologie ci-dessus est double. Premièrement, cela facilite le changement de technologie utilisée sur le site Web. Par exemple, je peux changer une page d’index.html en index.php sans rompre les liens ou les listes de moteurs de recherche. Deuxièmement, l’extension de fichier d’une page de contenu est "noise"; supprimer l'extension de fichier de l'URL donne des URL plus courtes et, espérons-le, plus lisibles.

Comme pour les autres types de fichiers:

  • Tous les fichiers CSS résident dans un répertoire css à la racine du site Web.
  • Tous les fichiers d’image résident dans un répertoire ou sous-répertoire d’image situé à la racine du site Web.
  • Tous les fichiers JavaScript résident dans un répertoire de scripts à la racine du site Web.
  • Tous les fichiers flash et autres fichiers vidéo se trouvent dans un répertoire ou sous-répertoire vidéo situé à la racine du site Web.

Sur un serveur Apache, je désactive Options Indexes pour les répertoires susmentionnés. Sur les deux serveurs Apache et IIS, je ne spécifie pas d'index de répertoire (document par défaut) pour les répertoires susmentionnés. Ainsi, une demande pour l'un des répertoires entraîne une erreur HTTP 403.

6
Ryan Prechel