Prawidłowe utworzenie adresu URL za pomocą ciągu zapytania i hashtagu kotwicy

114

Kiedy w adresie URL widoczne są zarówno ciąg zapytania, jak i znacznik kotwicy (znacznik skrótu), jaka jest właściwa kolejność ich pojawiania się?

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

lub

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

Czy jest jakaś dokumentacja na ten temat?

aktualizacja: adresy URL są obsługiwane przez Wordpress / PHP

Dan
źródło

Odpowiedzi:

148
?var=var#hash

wszystko po #stronie klienta.

Zajrzyj także do przepisywania adresów URL, aby pozbyć się brzydkiego ?var=var

blitzmann
źródło
26
Ciąg zapytania jest brzydki, ale ma swój cel i jest bardziej elastyczny
Morio
7
Co jest złego w używaniu ciągów zapytań? nie bez powodu są częścią standardu HTTP
Julio Bastida,
Tak, ale w przypadku SPA (aplikacji jednostronicowych), jakie parametry dla parametrów strony do strony po stronie klienta?
Pete Alvin
64

? powinien znajdować się przed #, jak podano w RFC 3986 :

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

Zaczerpnięte z odpowiedzi w superuser ( /superuser/498617/does-an-anchor-tag-come-before-the-query-string-or-after ):

pałka policjanta
źródło
2
To powinna być akceptowana odpowiedź. Wyraźnie wskazuje na dokumentację i jest pozbawiona osobistej opinii komentatora.
Amir Keibi
3

Zwróć uwagę, że jeśli adres URL zawiera zarówno tagi kotwicy (#), jak i ciągi zapytań (?), Przeglądarka może zignorować ciąg zapytania i przejść do tagu kotwicy bez ponownego ładowania strony.

Może być konieczne przesłanie strony za pomocą pliku

    <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> 

a nie tylko link URL

    <a href='webpage.php?q=string#tag'>.
Nauczyciel Michael
źródło
1

Jeśli intencją użycia #jest oznaczenie strony, fragmentto - tak, ?wtedy #.

Jeśli #nadchodzi wcześniej ?i nie ma oznaczać strony fragment(może się to zdarzyć, gdy #jest częścią uprawnień (nazwa użytkownika i hasło)), musi być zakodowana lub masz kłopoty. To samo dotyczy wszelkich innych znaków specjalnych ( :, @...), które mogłyby dać inne znaczenie do adresu URL.

Matas Vaitkevicius
źródło