Правильне формування URL-адреси за допомогою рядка запиту та хештега прив’язки


114

Коли в URL-адресі видно і рядок запиту, і тег прив’язки (хеш-тег), яким правильним є їх порядок?

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

або

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

Чи є на це документація?

оновлення: URL-адреси обробляються Wordpress / PHP

Відповіді:


148
?var=var#hash

все після #є стороною клієнта.

Крім того, погляньте на перезапис URL-адрес, щоб позбутися негарного ?var=var


26
рядок запиту некрасивий, але він має своє призначення і є більш гнучким
Моріо

7
Що не так у використанні рядків запитів? вони є частиною стандарту HTTP чомусь
Хуліо Бастіда,

Так, але для SPA-пакетів (додатки для однієї сторінки), які параметри для параметрів "сторінка на сторінку" клієнта?
Піт Елвін

64

? має бути перед #, як зазначено в RFC 3986 :

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

Взято з відповіді на адресу суперпользователя ( /superuser/498617/does-an-anchor-tag-come-before-the-query-string-or-after ):


2
Це має бути прийнятою відповіддю. Він чітко вказує на документацію і не відповідає особистій думці коментатора.
Амір Кейбі

3

Зауважте, що коли в URL-адресі є як теги прив’язки (#), так і рядки запиту (?), Браузер може ігнорувати рядок запиту та переходити до тегу прив’язки, не завантажуючи сторінку.

Можливо, буде потрібно надіслати сторінку за допомогою

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

а не просто посилання на URL

    <a href='webpage.php?q=string#tag'>.

1

Якщо метою використання #є позначення сторінки, fragmentто - так, ?тоді #.

Якщо ви #переходите раніше, ?і це не позначає сторінку fragment(це може статися, коли #є частиною повноважень (ім'я користувача та пароль)), її потрібно закодувати або у вас виникли проблеми. Те ж саме відноситься і до будь-яким іншим спеціальним символам ( :, @, ...) , які могли б дати інше значення URL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.