假设这是在一个名为index.php
at的文件中http://mysite.com/
:
if ( !logged_in() ) {
header("Location: http://www.mysite.com/login/");
}
如果有人输入 url http://mysite.com/#profile/edit/
,PHP 会将“#profile/edit/”复制到重定向的地址。因此,用户被发送到:mysite.com/login/#profile/edit/
。这不是我想要的行为。我只是希望它重定向到mysite.com/login/
.
有谁知道如何告诉 PHP 只使用我给它的位置,而忽略它认为应该使用的任何其他信息?
编辑:这对我来说是个问题的原因是我正在使用路由系统Backbone
(它依赖于“#parms”进行导航)。
EDIT2:看起来PHP重定向在使用哈希时并不安全,因为跨浏览器的行为不一致。当然,另一种选择是使用基于 javascript 的解决方案:
function redirect(href) {
// window.location.hash = ""; (not necessary)
window.location = href;
}
然而,这是一个严重的痛苦,因为我现在需要 PHP 告诉 javascript 稍后在页面中执行重定向。但是,如果我不这样做,当用户点击一个书签(在他们登录时创建的)时,mysite.com/#profile/
它会将他们重定向到mysite.com/login/#profile/
,此时他们会被告知他们到达了一个无效的 URL。
啊。