当查询字符串和锚标记(哈希标记)在 URL 中都可见时,它们出现的正确顺序是什么?
http://www.whatever.com?var=val#anchor
或者
http://www.whatever.com#anchor?var=val
有这方面的任何文件吗?
URL 由 WordPress / PHP 处理。
当查询字符串和锚标记(哈希标记)在 URL 中都可见时,它们出现的正确顺序是什么?
http://www.whatever.com?var=val#anchor
或者
http://www.whatever.com#anchor?var=val
有这方面的任何文件吗?
URL 由 WordPress / PHP 处理。
? 如RFC 3986中所述,应位于 # 之前:
relative-ref = relative-part [ "?" query ] [ "#" fragment ]
取自超级用户的答案(锚标记是在查询字符串之前还是之后?):
请注意,当 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
then - yes ?
and then #
。
如果#
出现在之前?
并且它不是表示页面(当它是权限的一部分(用户名和密码)fragment
时可能发生这种情况),它必须被编码,否则你就有麻烦了。#
这同样适用于可能赋予 URL 不同含义的任何其他特殊字符 ( :
, ,...)。@
您可以将此 JavaScript 代码放在站点的公共部分,以强制将所有不正确的请求重定向到具有正确顺序的模拟:
<script>
var p=location.hash.indexOf("?");
if(p>=0){
var goodLoc = location.href.replace(location.hash, "");
location.replace(goodLoc + window.location.hash.substring(p) + window.location.hash.substring(0, p));
}
</script>