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 に到達したことが通知されます。
うーん。