154

クエリ文字列とアンカータグ(ハッシュタグ)の両方がURLに表示される場合、それらが表示される適切な順序は何ですか?

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

また

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

これに関するドキュメントはありますか?

URLはWordPress/PHPによって処理されています。

4

5 に答える 5

196
?var=var#hash

その後はすべて#クライアント側です。

また、醜いものを取り除くためにURLの書き換え?var=varを調べてください。

于 2012-10-02T00:51:17.650 に答える
101

RFC 3986に記載されているように、#の前に来る必要があります。

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

スーパーユーザーでの回答から取得(アンカータグはクエリ文字列の前にありますか、それとも後にありますか?):

于 2016-01-13T16:57:41.140 に答える
4

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'>.
于 2018-02-11T06:23:30.210 に答える
1

使用する意図がページ#を示すことである場合は、 -はい、次にfragment?#

#が前に来て?、ページを示さない場合(これは、権限(ユーザー名とパスワード)の一部であるfragment場合に発生する可能性があります)、エンコードする必要があります。そうしないと、問題が発生します。URLに異なる意味を与える可能性のある#他の特殊文字(、、 ...)にも同じことが当てはまり:ます。@

于 2016-07-05T13:45:33.813 に答える
1

この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>
于 2020-11-06T16:22:08.817 に答える