Que signifie un point dans un chemin D'URL?

dans un question concernant un problème Ajax jQuery , l'asker essayait d'utiliser un . dans le début d'une URL relative. Je lui ai conseillé de l'enlever, mais n'ai aucune idée de ce qu'un point fait réellement là.

son URL relative ressemblait à ceci:

./delete-misc/test-ajax-code.php

j'ai essayé de regarder dans les RFC, sans succès. Je sais ce que le point fait en ligne de commande (Linux ou Win), il représente le répertoire courant.

j'aimerais savoir: comment cela fonctionne-t-il sur Internet dans une URL? Quel est le meilleur-pratique utilise? Des explications détaillées sont les bienvenues.

32
demandé sur Community 2011-05-15 18:00:02

2 réponses

le segment de chemin . est typiquement utilisé au début des références de chemin relatif et sont supprimés au cours de la résolution de référence , c.-à-d. le processus de résolution D'un URI relatif référence à un URI absolu:

Le chemin des segments " . " et " .. ", aussi connu en tant que dot-segments, sont défini pour référence relative dans la hiérarchie des noms de chemin. Ils être destiné à être utilisé au début d'une référence de trajectoire relative ( Section 4.2 ) pour indiquer la position relative à l'intérieur de la hiérarchie arbre de noms. Ce rôle est similaire à celui qu'ils jouent dans certains structures des répertoires de fichiers des systèmes pour indiquer le répertoire courant et le répertoire parent, respectivement. Toutefois, contrairement à un fichier système, ces segments de points ne sont interprétés qu'à l'intérieur du chemin URI hiérarchie et sont supprimés dans le cadre de la processus de résolution (Section ) 5.2 ).

il y a supprimer les Segments de points algorithmes qui décrit comment ces segments de points doivent être interprétés dans un certain contexte de chemin de base.

dans votre cas, ./delete-misc/test-ajax-code.php et delete-misc/test-ajax-code.php sont équivalents. Mais il y a des cas où un chemin relatif peut être mal interprété comme un URI absolu, par exemple avoir un : dans le premier segment de chemin comme search:foo qui est différent de ./search:foo comme le premier est un URI absolu tandis que le dernier est un chemin URI relatif.

34
répondu Gumbo 2011-05-15 14:38:47

A ./ devant L'URL est équivalent au chemin courant. Ainsi ./delete-misc/test-ajax-code.php et delete-misc/text-ajax-code.php sont deux chemins relatifs. Dans la réponse que vous avez postée, vous avez demandé de supprimer le point seulement, donc le chemin de /delete-misc/test-ajax-code.php se traduirait comme un chemin absolu au lieu d'un chemin relatif.

Edit: une chose de plus - . est le répertoire courant et .. est le répertoire parent. Comme le commente phihag, il faut vraiment les éviter et les protéger contre en code. Répertoire transversal peut être utilisé pour le mal.

6
répondu Michael Dean 2011-05-15 14:33:20