1

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;
}

ただし、ページの後半でリダイレクトを行うように JavaScript に指示するために PHP が必要になるため、これは深刻な問題です。しかし、そうしないと、ユーザーが (ログイン時に作成された) ブックマークをクリックすると、mysite.com/#profile/にリダイレクトされmysite.com/login/#profile/、その時点で無効な URL に到達したことが通知されます。

うーん。

4

0 に答える 0