1

假设这是在一个名为index.phpat的文件中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。

啊。

4

0 回答 0