Відповіді:
?var=var#hash
все після #
є стороною клієнта.
Крім того, погляньте на перезапис URL-адрес, щоб позбутися негарного ?var=var
? має бути перед #, як зазначено в RFC 3986 :
relative-ref = relative-part [ "?" query ] [ "#" fragment ]
Взято з відповіді на адресу суперпользователя ( /superuser/498617/does-an-anchor-tag-come-before-the-query-string-or-after ):
Зауважте, що коли в 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'>.
Якщо метою використання #
є позначення сторінки, fragment
то - так, ?
тоді #
.
Якщо ви #
переходите раніше, ?
і це не позначає сторінку fragment
(це може статися, коли #
є частиною повноважень (ім'я користувача та пароль)), її потрібно закодувати або у вас виникли проблеми. Те ж саме відноситься і до будь-яким іншим спеціальним символам ( :
, @
, ...) , які могли б дати інше значення URL.