3

私のURLはhttp://www.website.ro/index.php?subiect=10046&pag=1#1006で、ここにアクションのないフォームがあります(<form action="" method="post">

送信後、いくつかの入力フィールドをチェックしています。エラーが発生した場合は、リダイレクトしたいと思います。私はこのコードを使用します:

header('Location: /index.php?subiect='.$_GET['subiect'].'&pag='.$_GET['pag']); exit();

しかし、リダイレクトには#1006含まれているため、私のページはhttp://www.website.ro/index.php?subiect=10046&pag=1#1006になります。

ヘッダーの場所を次のように変更しようとしました:

header('Location: http://www.google.com'); exit();

私を連れて行くページは次のとおりです:http : //www.google.com#1006

なぜこれを行うのですか?

私はob_start()最初の行を持っていて、それを削除しようとしました。無効。リダイレクトスタイルの後のURLには#1006があります。

URLがhttp://www.website.ro/index.php?subiect=10046&pag=1で、ヘッダーの場所を使用している場合、問題はありませんが、URLに#1006が含まれている場合、リダイレクト後のURLにはtoが含まれます。

4

1 に答える 1

3

後の部分はフラグメント識別子#と呼ばれ、ページが別のURLから取得された場合でも、ページの一部を識別します。

デフォルトでは、ほとんどのブラウザは、使用されているステータスコードに関係なく、3xxリダイレクトが発生したときにフラグメント識別子を保持します。この問題に関するいくつかのリソースについては、URLフラグメントと302リダイレクトを参照してください。

フラグメント識別子自体(空の識別子でも)を含むURIを返すことができます。

header('Location: http://www.google.com/#');

次に、このドラフトで指定されているように、代わりにその1つが使用されます。

例外は、返されたURIにすでにフラグメント識別子がある場合です。その場合、元のフラグメント識別子を追加してはなりません(MUSTNOT)。

onclickJavascriptを使用してフラグメント識別子を変更することもできます。

于 2012-12-28T23:17:13.457 に答える