为什么CodeIgniter重定向不删除URL末尾的哈希/磅(#)?

为什么CodeIgniter重定向不删除URL末尾的哈希/磅(#)?,codeigniter,Codeigniter,我不确定这到底是一个CodeIgniter问题还是一个浏览器问题。这在Chrome中发生,但在Safari中不发生。然而,我认为这不应该发生在任何浏览器中 如果您访问example.com/foo 35;,其中包含 redirect('bar'); 您可能希望最终访问example.com/bar。相反,您最终会访问example.com/bar。我不明白为什么散列没有消失。这毫无意义。发生了什么事?不可能哈希标记只能由客户端脚本访问。CodeIgniter、PHP或任何其他服务器端脚本甚至不

我不确定这到底是一个CodeIgniter问题还是一个浏览器问题。这在Chrome中发生,但在Safari中不发生。然而,我认为这不应该发生在任何浏览器中

如果您访问example.com/foo 35;,其中包含

redirect('bar');

您可能希望最终访问example.com/bar。相反,您最终会访问example.com/bar。我不明白为什么散列没有消失。这毫无意义。发生了什么事?

不可能哈希标记只能由客户端脚本访问。CodeIgniter、PHP或任何其他服务器端脚本甚至不知道#符号后面是什么。发送到服务器的请求在#符号之前。符号后的部分传递给文档进行解释。如果有一个id为#号的元素,页面将向下滚动到该元素。否则js可以阅读它,并按照您的意愿使用它


此外,HTTP重定向使用与原始页面相同的参数传输请求,因此也会传递hastag,如果需要删除哈希,请使用刷新方法:

重定向('bar','refresh');

这回答了这个问题,而不仅仅是:在iOS上安装(添加到主屏幕)web应用的特定场景中,重定向完全失败,而没有“刷新”选项。这个答案解决了我的两个问题,谢谢。