web-dev-qa-db-fra.com

Quand devrais-je utiliser un slash de fin dans mon URL?

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

Je suis tout à fait au courant des problèmes liés au référencement - contenu en double et contenu canonique; J'essaie de comprendre lequel je devrais utiliser dans le contexte des pages de service correctement seul.

Par exemple, mon collègue pense qu'une fin de barre oblique à la fin signifie qu'il s'agit d'un "dossier" - d'un "répertoire". Ce n'est donc pas un style correct. Mais je pense que sans une barre oblique à la fin - ce n’est pas tout à fait correct non plus, car il ressemble presque à un dossier, mais ce n’est pas le cas 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?

257
Denis

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

Fondamentalement, le format de l'URL provenait du même format UNIX de fichiers et de dossiers, plus tard sur les systèmes DOS et enfin, adapté au Web.

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

Source: Wikipedia: identificateur de ressource uniforme

Une autre bonne source à lire: Wikipedia: Schéma URI

Selon la norme RFC 1738, qui définissait les URL en 1994, lorsque les ressources contenaient des références à d’autres ressources, elles pouvaient utiliser des liens relatifs pour définir l’emplacement de la deuxième ressource comme si elle était "au même endroit que celle-ci, à l’exception du rapport relatif suivant". chemin". Il a ensuite ajouté que de telles URL relatives dépendent de l’URL d’origine contenant une structure hiérarchique sur laquelle est basé le lien relatif, et que les modèles d’URL ftp, http et de fichier sont des exemples de certaines pouvant être considérées comme hiérarchiques , les composants de la hiérarchie étant séparés par "/".

Source: Wikipedia Uniform Resource Locator (URL)

Aussi:

C'est la question que nous entendons souvent. En avant aux réponses! Historiquement, il est courant que les URL avec une barre oblique finale indiquent un répertoire, et que celles sans une barre oblique finale désignent un fichier:

http://example.com/foo/ (avec une barre oblique finale, classiquement un répertoire)

http://example.com/foo (sans barre oblique, classiquement un fichier)

Source: blog Google WebMaster Central - Pour réduire ou ne pas réduire

Finalement:

  1. Une barre oblique à la fin de l'URL donne à cette adresse un aspect "joli".

  2. Une URL sans barre oblique à la fin et sans extension a un aspect un peu "bizarre".

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

MAIS je suis un partisan des meilleures pratiques du Web, quel que soit l'environnement. Comme vous l'avez dit à propos de l'URL sans extension, cela peut être confus et incertain.

125
Dementic

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 c'est important quand il y a des URL relatives.

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

Je suis toujours surpris par l'utilisation intensive des barres obliques de fin sur les URL autres que les annuaires (WordPress, entre autres). Cela ne devrait vraiment pas être un débat contradictoire, car mettre une barre oblique après une ressource est sémantiquement faux. Le Web a été conçu pour fournir des ressources adressables, et ces adresses - 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 extensions), mais ne peuvent pas contenir ou se terminer par des barres obliques.

À l'aide de ces instructions, il est erroné de mettre une barre oblique après une ressource autre qu'un répertoire.

57
Yarin

Ce n’est pas vraiment une question d’esthétique, mais bien une différence technique. Le répertoire qui y est pensé est tout à fait correct et explique tout. Allons-y:

Vous êtes de retour à l'âge de pierre ou ne publiez que des pages statiques

Vous avez une structure de répertoire fixe sur votre serveur Web et uniquement des fichiers statiques tels que des images, du HTML, etc. - pas de scripts côté serveur ou quoi que ce soit.

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

Un jour, quelqu'un demande simplement /dvd/ - , qui est un répertoire , et le serveur tente de déterminer le contenu à livrer. Outre les restrictions d'accès, etc., il existe deux possibilités: Afficher le contenu du répertoire à l'utilisateur (je parie que vous l'avez déjà vu quelque part) ou afficher un fichier par défaut (dans Apache, il s'agit de: DirectoryIndex: sets the file that Apache will serve if a directory is requested.)

Jusqu'ici tout va bien, c'est le cas attendu. Il montre déjà la différence de traitement, alors allons-y:

À 5 h 34, vous avez commis une erreur en téléchargeant vos fichiers.

(Ce qui est d'ailleurs parfaitement compréhensible.) Vous avez donc fait quelque chose de totalement faux et au lieu de télécharger /dvd/the_big_lebowski.htm, vous avez chargé ce fichier sous le nom dvd (sans extension) sur /.

Quelqu'un a ajouté un signet à votre liste de répertoires /dvd/ (bien sûr, vous ne vouliez pas créer et mettre à jour toujours cet astucieux index.htm) et visitait votre site Web. Le contenu du répertoire est livré - tout va bien.

Quelqu'un a entendu parler de votre liste et tape /dvd. Et maintenant c'est foutu. Au lieu du répertoire de votre DVD répertoriant le serveur, vous trouverez un fichier portant ce nom et livrant votre fichier Big Lebowski.

Donc, vous supprimez ce fichier et dites au gars de recharger la page. Votre serveur cherche le fichier /dvd, mais il est parti. La plupart des serveurs remarqueront alors qu’il existe un répertoire portant ce nom et diront au client que ce qu’il cherchait est effectivement ailleurs. La réponse sera probablement:

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

Donc, ignorant totalement ce que vous pensez des répertoires ou des fichiers, seul le serveur peut gérer ce genre de choses et - sauf indication contraire - décide pour vous de la signification de "slash or not".

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

Est-ce que ça va? Non.

"Très bien" n'est pas assez bon pour vous

Vous avez une page dynamique où tout est passé à /index.php et est traité. Tout a fonctionné assez bien jusqu'à maintenant, mais tout ça commence à se sentir plus lent et vous enquêtez.

Bientôt, vous remarquerez que /dvd/list fait exactement la même chose: redirection 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 vous retrouvez avec des tonnes de redirections HTTP inutiles (= demandes supplémentaires) qui ralentissent l'expérience de l'utilisateur.

Très probablement, vous avez également ici un index de répertoire par défaut: index.php?controller=dvd sans action charge simplement en interne index.php?controller=dvd&action=list.

Sommaire:

  • S'il se termine par /, il ne peut jamais être un fichier. Aucun serveur ne doit deviner.

  • ne barre oblique ou non est une signification complètement différente. Il y a une différence technique/ressource entre "barre oblique ou non", vous devez en être conscient et l'utiliser en conséquence. Tout simplement parce que le serveur charge probablement /dvd/index.htm - ou charge le script approprié - lorsque vous dites /dvd: Il le fait, mais pas parce que vous avez fait la bonne demande. Ce qui aurait été /dvd/.

  • Omettre la barre oblique même si vous avez en effet signifié la version barrée vous donne une pénalité de requête HTTP supplémentaire. Ce qui est toujours mauvais (pensez de latence mobile) et a plus de poids qu’une "jolie URL" - d’autant plus que les robots d'exploration ne sont pas aussi bêtes que le pensent les SEO ou veulent que vous les croyiez;)

24
nico gawenda

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

18
musiphil

D'autres réponses semblent ici privilégier l'omission de la barre oblique finale. Il existe un cas dans lequel une barre oblique de fin aidera à l'optimisation des moteurs de recherche (SEO). C'est le cas que votre document a ce qui semble être une extension de fichier qui n'est pas .html. Cela devient un problème avec les sites qui évaluent des sites Web. Ils pourraient choisir entre ces deux URL:

  • http://mysite.example.com/rated.example.com
  • http://mysite.example.com/rated.example.com/

Dans un tel cas, je choisirais celui avec la barre oblique. En effet, l'extension .com est une extension des fichiers de commandes exécutables Windows. Les moteurs de recherche et les correcteurs de virus n'apprécient pas souvent les URL qui semblent contenir des logiciels malveillants distribués par ces mécanismes. Le slash final semble atténuer les inquiétudes, permettant à la page de se classer dans les moteurs de recherche et d’être détectée par des virus.

Si vos URL ne contiennent pas de . dans la partie du fichier, je vous recommande d'omettre le slash de fin pour des raisons de simplicité.

10

Qui a dit qu'un nom de fichier avait besoin d'une extension? jetez un coup d'œil sur une machine * nix de temps en temps ...
Je suis d’accord avec votre ami, pas de slash final.

9
Aaron Gage

Du point de vue du référencement, choisir d’inclure ou non une barre oblique à la fin d’une URL n’est pas pertinent. De nos jours, il est courant de voir des exemples des deux sur le Web. De toute façon, un site ne sera pas pénalisé, pas plus que ce choix n’affectera le classement des moteurs de recherche de votre site Web ou d’autres considérations relatives au référencement.

Choisissez simplement une convention de dénomination d'URL que vous préférez et incluez une balise méta canonique dans la section <head> de chaque page Web.

Les moteurs de recherche peuvent considérer une seule page Web comme deux URL dupliquées distinctes lorsqu'ils la rencontrent avec et sans la barre oblique finale, à savoir example.com/about-us/ et example.com/about-us.

Il est recommandé d'inclure une balise méta canonique sur chaque page, car vous ne pouvez pas contrôler le lien entre les autres sites et vos URL.

La balise canonique ressemble à ceci: <link rel="canonical" href="https://example.com/about-us" />. L'utilisation d'une balise méta canonique garantit que les moteurs de recherche ne comptent chacune de vos URL qu'une seule fois, que les autres sites Web incluent ou non une barre oblique finale lorsqu'ils renvoient sur votre site.

3
riot