Formation d'URL correcte avec la chaîne de requête et le hashtag d'ancrage

114

Lorsqu'une chaîne de requête et une balise d'ancrage (balise de hachage) sont visibles dans une URL, quel est leur ordre d'apparition?

http://www.whatever.com?var=val#anchor

ou

http://www.whatever.com#anchor?var=val

Existe-t-il de la documentation à ce sujet?

mise à jour: les URL sont gérées par Wordpress / PHP

Dan
la source

Réponses:

149
?var=var#hash

tout après #est côté client.

Examinez également la réécriture d'URL pour vous débarrasser de la laideur ?var=var

Blitzmann
la source
26
La chaîne de requête est moche mais elle a son but et est plus flexible
Morio
7
Quel est le problème avec l'utilisation de chaînes de requête? ils font partie de la norme HTTP pour une raison
Julio Bastida
Oui, mais pour les SPA (applications à page unique), quels paramètres pour les paramètres de page à page côté client?
Pete Alvin
64

? devrait venir avant le # comme indiqué dans la RFC 3986 :

relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Tiré d'une réponse sur superutilisateur ( /superuser/498617/does-an-anchor-tag-come-before-the-query-string-or-after ):

gamelle
la source
2
Cela devrait être la réponse acceptée. Il indique clairement la documentation et est dépourvu de l'opinion personnelle du comentateur.
Amir Keibi
3

Notez que lorsque l'URL comporte à la fois des balises d'ancrage (#) et des chaînes de requête (?), Le navigateur peut ignorer la chaîne de requête et accéder à la balise d'ancrage sans recharger la page.

Il peut être nécessaire de soumettre la page à l'aide d'un

    <form action='webpage.php?q=string#tag' method='GET or POST'>
    <input type='text' id='q' name='q' value='string'>
    <input type='submit' value='submit'>
    </form> 

plutôt qu'un simple lien URL

    <a href='webpage.php?q=string#tag'>.
Professeur Michael
la source
1

Si l'intention d'utiliser #est de désigner la page fragmentalors - oui ?alors #.

Si cela #vient avant ?et que ce n'est pas pour désigner la page fragment(cela peut arriver lorsque cela #fait partie de l'autorité (nom d'utilisateur et mot de passe)), il doit être encodé ou vous êtes en difficulté. La même chose s'applique à tous les autres caractères spéciaux ( :,, @...) qui pourraient donner une signification différente à url.

Matas Vaitkevicius
la source