407 votes

Quand dois-je utiliser une barre oblique de fin dans mon URL ?

Quand faut-il utiliser une barre oblique de fin dans une URL ? Par exemple, mon URL doit-elle ressembler à /about-us/ ou comme /about-us ?

Je suis tout à fait conscient des problèmes liés au référencement - contenu dupliqué et aspect canonique ; j'essaie de déterminer lequel je dois utiliser dans le contexte des pages de service. correctement seul.

Par exemple, mon collègue pense qu'une barre oblique à la fin signifie qu'il s'agit d'un "dossier", d'un "répertoire", et que ce n'est donc pas un style correct. Mais je pense que sans barre oblique à la fin, ce n'est pas tout à fait correct non plus, car cela ressemble presque à un dossier, mais ce n'en est pas un et ce n'est pas non plus un fichier normal, mais un nom de fichier sans extension.

Existe-t-il un moyen approprié de savoir lequel utiliser ?

249voto

Raedwald Points 8862

Ce n'est pas une question de préférence. /base et /base/ ont une sémantique différente. Dans de nombreux cas, la différence est sans importance. Mais elle est importante lorsqu'il s'agit d'URLs relatives.

  • child par rapport à /base/ est /base/child .
  • child par rapport à /base est (peut-être étonnamment) /child .

161voto

Dementic Points 3288

À mon avis, les barres obliques de fin sont mal utilisées.

À la base, le format URL est issu du même format UNIX de fichiers et de dossiers, puis sur les systèmes DOS, et enfin, adapté au web.

Une URL typique pour ce livre sur un système d'exploitation de type Unix serait un chemin de fichier tel que file:///home/username/RomeoAndJuliet.pdf, identifiant le livre électronique enregistré dans un fichier sur un disque dur local.

Source : Wikipedia : Identificateur de ressources uniformes

Une autre bonne source à lire : Wikipédia : Schéma URI

Selon la RFC 1738, qui a défini les URL en 1994, lorsque des ressources contiennent des références à d'autres ressources, elles peuvent utiliser des liens relatifs pour définir l'emplacement de la deuxième ressource, comme pour dire "au même endroit que celle-ci, mais avec le chemin relatif suivant". Elle ajoute que ces URL relatifs dépendent de l'URL d'origine qui contient une structure hiérarchique sur laquelle se base le lien relatif, et que les schémas ftp, http, et les URL de fichiers sont des exemples d'URL qui peuvent être considérées comme hiérarchiques, les composants de la hiérarchie étant séparés par "/".

Source : Localisateur de ressources uniformes (URL) de Wikipédia

Aussi :

C'est la question que nous entendons souvent. En avant pour les réponses ! Historiquement, il est courant que les URL comportant une barre oblique indiquent un répertoire, et que celles qui n'en comportent pas indiquent un fichier. désignent un fichier :

http://example.com/foo/ (avec slash de fin, conventionnellement un répertoire)

http://example.com/foo (sans slash de fin, conventionnellement un fichier)

Source : Blog Google WebMaster Central - Une barre oblique ou pas ?

Enfin :

  1. Une barre oblique à la fin de l'URL rend l'adresse "jolie".

  2. Une URL sans barre oblique à la fin et sans extension semble quelque peu "bizarre".

  3. Vous ne nommerez jamais votre fichier CSS (par exemple) http://www.sample.com/stylesheet/ le feriez-vous ?

MAIS je suis partisan des meilleures pratiques du web, quel que soit l'environnement. Cela peut être bancal et peu clair, comme vous l'avez dit à propos de l'URL sans extension.

84voto

Yarin Points 18186

Je suis toujours surpris par l'utilisation intensive des slashs de fin de ligne sur les URL non répertoriées (WordPress, entre autres). Il ne devrait pas s'agir d'un débat contradictoire, car l'ajout d'une barre oblique après une ressource est sémantiquement incorrect. Le web a été conçu pour fournir des ressources adressables, et ces adresses - les URL - ont été conçues pour émuler une hiérarchie de système de fichiers de style *nix. Dans ce contexte :

  • Les barres obliques désignent toujours des répertoires, jamais des fichiers.
  • Les fichiers peuvent porter n'importe quel nom (avec ou sans extension), mais ne peuvent pas contenir de barre oblique ni se terminer par une barre oblique.

En utilisant ces directives, il est erroné de mettre un slash après une ressource non répertoriée.

47voto

nico gawenda Points 962

Ce n'est pas vraiment une question d'esthétique, mais bien une différence technique. Le répertoire qui y réfléchit est tout à fait correct et explique à peu près tout. Mettons-nous d'accord :

Vous êtes revenu à l'âge de pierre ou vous ne proposez que des pages statiques.

Vous disposez d'une structure de répertoires fixe sur votre serveur web et uniquement de fichiers statiques tels que des images, des fichiers html, etc.

Un navigateur demande /index.htm il existe et est livré au client. Par la suite, vous avez beaucoup de films DVD, disons, examinés et une page html pour chacun d'entre eux dans le répertoire /dvd/ répertoire. Maintenant, quelqu'un demande /dvd/adams_apples.htm et il est livré parce qu'il est là.

A un moment donné, quelqu'un demande juste /dvd/ - qui est un répertoire et le serveur essaie de savoir ce qu'il doit livrer. En plus des restrictions d'accès et autres, il y a deux possibilités : Montrer à l'utilisateur le contenu du répertoire (je parie que vous avez déjà vu cela quelque part) ou montrer un fichier par défaut (dans Apache c'est : DirectoryIndex: sets the file that Apache will serve if a directory is requested. )

Jusqu'ici tout va bien, c'est le cas attendu. Elle montre déjà la différence de maniabilité, alors entrons dans le vif du sujet :

A 5:34am, vous avez fait une erreur en téléchargeant vos fichiers.

(Ce qui est d'ailleurs tout à fait compréhensible.) Donc, vous avez fait quelque chose de totalement faux et au lieu de télécharger /dvd/the_big_lebowski.htm vous avez téléchargé ce fichier en tant que dvd (sans extension) à / .

Quelqu'un a ajouté votre /dvd/ (bien sûr, vous ne vouliez pas créer et toujours mettre à jour cette astucieuse liste d'adresses. index.htm ) et visite votre site web. Le contenu du répertoire est livré - tout va bien.

Quelqu'un a entendu parler de votre liste et est en train de taper /dvd . Et maintenant c'est foutu. Au lieu de la liste de votre répertoire de DVD, le serveur trouve un fichier avec ce nom et livre votre fichier Big Lebowski.

Donc, vous supprimez ce fichier et vous dites au gars de recharger la page. Votre serveur cherche le fichier /dvd fichier, mais il a disparu. La plupart des serveurs remarqueront alors qu'il existe un répertoire portant ce nom et indiqueront au client que ce qu'il cherchait se trouve effectivement ailleurs. La réponse sera très probablement la suivante :

Status Code:301 Moved Permanently avec Location: http://[...]/dvd/

Donc, en ignorant totalement ce que vous Si vous pensez à des répertoires ou à des fichiers, le serveur est le seul à pouvoir gérer ce genre de choses et - sauf avis contraire - décide pour vous de la signification de "slash ou non".

Enfin, après avoir reçu cette réponse, le client charge /dvd/ et tout va bien.

Est-ce que ça va ? Non.

"Juste bien" n'est pas assez bon pour toi.

Vous avez une page dynamique dans laquelle tout est passé à /index.php et est traité. Tout fonctionnait très bien jusqu'à présent, mais l'ensemble commence à être plus lent et vous enquêtez.

Bientôt, vous remarquerez que /dvd/list fait exactement la même chose : il redirige vers /dvd/list/ qui est ensuite traduit en interne en index.php?controller=dvd&action=list . Une demande supplémentaire - mais encore pire ! customer/login redirige vers customer/login/ qui à son tour redirige vers l'URL HTTPS de customer/login/ . Vous finissez par avoir tonnes de redirections HTTP inutiles (= demandes supplémentaires) qui ralentissent l'expérience de l'utilisateur.

Il est fort probable que vous ayez un index de répertoire par défaut ici aussi : index.php?controller=dvd sans action charges internes simples index.php?controller=dvd&action=list .

Résumé :

  • S'il se termine par / il peut jamais être un fichier. Pas de devinette de serveur.

  • Un slash ou pas de slash sont des significations totalement différentes. Il existe une différence technique/ressource entre "slash ou pas slash", et vous devez en être conscient et l'utiliser en conséquence. Ce n'est pas parce que le serveur charge très probablement /dvd/index.htm - ou charge le script correct - quand vous dites /dvd : Il le fait, mais pas parce que vous avez fait la bonne demande. Qui aurait été /dvd/ .

  • Omettre la barre oblique même si vous avez effectivement moyenne la version avec barre oblique vous donne une pénalité supplémentaire pour les requêtes HTTP. Ce qui est toujours mauvais (pensez à la latence mobile) et a plus de poids qu'une "jolie URL" - d'autant plus que les crawlers ne sont pas aussi bêtes que les SEOs le croient ou veulent vous le faire croire ;)

25voto

musiphil Points 916

Lorsque vous faites votre URL /about-us/ (avec la barre oblique de fin), il est facile de commencer par un seul fichier index.html puis, plus tard, l'étendre et ajouter d'autres fichiers (par ex. our-CEO-john-doe.jpg ) ou même de construire une hiérarchie en dessous (par ex. /about-us/company/ , /about-us/products/ etc.) selon les besoins, sans modifier l'URL publiée . Cela vous donne une grande flexibilité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X