我的网址为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()
,我试图将其删除。没有效果。重定向stil后的网址#1006 。
如果我的网址是http://www.website.ro/index.php?subiect=10046&pag=1并且我使用标头位置我没有问题,但如果网址包含#1006重定向后的网址包含。
答案 0 :(得分:3)
#
之后的部分称为片段标识符,并标识页面的一部分,即使该页面是从其他网址检索的。
默认情况下,无论使用何种状态代码,大多数浏览器都会在发生3xx重定向时保留片段标识符。有关此事的若干资源,请参阅URL Fragment and 302 redirects。
您可以返回包含片段标识符本身的URI(即使是空的):
header('Location: http://www.google.com/#');
然后将使用this draft中指定的那个:
例外情况是返回的URI已经有一个片段 标识符。在这种情况下,原始片段标识符绝不可以 没有添加到它。
您还可以使用Javascript更改片段标识onclick
。