Formación correcta de URL con Cadena de consulta y Hashtag de anclaje


Cuando tanto una cadena de consulta como una etiqueta de anclaje (etiqueta hash) son visibles en una URL, ¿cuál es el orden adecuado para que aparezcan?

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

O

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

¿Hay alguna documentación sobre esto?

Actualización: Las URL están siendo manejadas por Wordpress / PHP

Author: Dan, 2012-10-02

4 answers

?var=var#hash

Todo después de # es del lado del cliente.

También, busque en la reescritura de url para deshacerse de ugly ?var=var

 95
Author: Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-20 22:06:27

? debe venir antes de la # como se indica en RFC 3986:

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

Tomado de una respuesta en superuser (https://superuser.com/questions/498617/does-an-anchor-tag-come-before-the-query-string-or-after):

 39
Author: billy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-20 10:04:24

Si la intención de usar # es denotar página fragment entonces - sí ? entonces #.

Si # viene antes de ? y no es para denotar página fragment (esto puede suceder cuando # es parte de la autoridad (nombre de usuario y contraseña)) tiene que ser codificado o usted está en problemas. Lo mismo se aplica a cualquier otro carácter especial(:,@,...) que podría dar un significado diferente a la url.

 1
Author: Matas Vaitkevicius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-05 13:45:33

Tenga en cuenta que cuando la URL tiene etiquetas de anclaje ( # ) y cadenas de consulta (?), el navegador puede ignorar la cadena de consulta y navegar a la etiqueta de anclaje sin recargar la página.

Puede ser necesario enviar la página utilizando 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> 

En lugar de solo un enlace URL

    <a href='webpage.php?q=string#tag'>.
 1
Author: Teacher Michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-11 06:23:30