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


Когда строка запроса и тег привязки (хэш-тег) видны в URL-адресе, каков правильный порядок их отображения?

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

Или

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

Существует ли какая-либо документация по этому вопросу?

Update: URL-адреса обрабатываются Wordpress / PHP

4 71

4 ответа:

?var=var#hash

Все, что после #, является клиентской стороной.

Кроме того, посмотрите на переписывание url, чтобы избавиться от уродливого ?var=var

? должно стоять перед # , Как отмечено в RFC 3986:

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

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

Если намерение использования # состоит в том, чтобы обозначить страницу fragment, то - ДА ?, ТО #.

Если # идет перед ? и он не должен обозначать страницу fragment (это может произойти, когда # является частью авторитета (имя пользователя и пароль)), он должен быть закодирован, или вы в беде. То же самое относится и к любым другим специальным символам (:,@,...), которые могут дать различное значение к URL-адресу.

Обратите внимание, что когда 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'>.