web-dev-qa-db-fra.com

Le slash final est-il automatiquement ajouté au clic de l'URL de la page d'accueil dans le navigateur?

Je pose la question parce que chaque fois que je survole un lien vers une page d'accueil (par exemple, http://www.example.com), je remarque qu'une barre oblique finale est toujours ajoutée (comme indiqué dans la barre d'état du navigateur), que le lien de la page d'accueil contienne un L'attribut href se termine par un slash ou non, mais chaque fois que je suis sur la page d'accueil, l'URL affichée n'a pas de slash final.

J'ai essayé d'entrer une barre oblique à l'URL dans la barre d'URL. Et avec Firebug activé, je remarque que le site renvoie toujours un statut 200 OK. Un article ici traitant de cette question indique qu'avoir une barre oblique à la fin évitera une redirection 301. Mais je ne vois aucune redirection, même sur this page.

Serait-ce une fonctionnalité du navigateur qui ajoute la barre oblique?

17
Question Overflow

Oui, tous les navigateurs classiques "ajoutent une barre oblique" à la requête HTTP lors de la demande d'une URL de domaine nu (c'est-à-dire la page d'accueil). Ceci est réellement nécessaire pour rendre la requête HTTP valide, ce qui pour http://example.com/ est:

GET / HTTP/1.1
Host: example.com

Notez le / (barre oblique) dans la première ligne - il s’agit de l’URL demandée. Ce n'est pas valide de n'avoir rien ici. De RFC 2616 :

Notez que le chemin absolu ne peut pas être vide; si aucun n'est présent dans l'URI d'origine, il DOIT être indiqué par "/" (la racine du serveur).

Vous devez examiner la requête HTTP que le navigateur envoie au serveur. L'URL affichée dans la "barre d'état du navigateur" ou même l'URL dans la barre d'adresse peut être différente - plus conviviale. Google Chrome ne pas ajoute la barre oblique finale dans la barre d'état, bien que la barre oblique soit présente dans la demande.

Aucune redirection 301 ne se produit si vous spécifiez http://example.com (pas de barre oblique) car le navigateur corrige la requête HTTP avant son exécution.

Notez que cela diffère des barres obliques ajoutées à la fin des URL lorsqu'il existe un chemin/répertoire. par exemple. http://example.com/directory/. L’article auquel vous associez semble traiter les deux à la fois et ne semble pas être tout à fait correct, OMI. Si vous avez demandé http://example.com/directory (pas de barre oblique), le navigateur n'ajoute pas de barre oblique et, oui, la plupart des serveurs seront redirigés 301 vers http://example.com/directory/ (barre oblique) - mais cela dépend du serveur; ça pourrait tout simplement casser! Sur Apache, par exemple, cela dépend du fait que la directive DirectorySlash soit définie sur on.

28
MrWhite