2017-09-01 18 views
0

はじめに:私は、次のアドレスにしていますPHPでハッシュ(#)のないURLにページをリダイレクトする方法は?

:次のコードの助けを借りて

http://www.example.com/thanks 

:成功のコンタクトフォーム送信後

http://www.example.com/#contact 

、ユーザーが次のアドレスにリダイレクトされます:

// Redirect to thank you page 
redirect_to("thanks"); 
おかげページのためのhtaccessのルールがある

// Page redirection 
function redirect_to($url) 
{ 
    if(isset($url) && $url != '') 
    { 
     header("Location: " . $url); 
     exit(); 
    } 
} 

# Thanks Page 
RewriteRule ^thanks/?$ thanks.php [QSA,L] 
#RewriteRule ^thanks/$ thanks.php [QSA,L] 

問題:

問題は、ハッシュ(#)です

関数redirect_toは、()のように定義されますつまり、フラグメント部分はまだURLのように固執しています。

http://www.example.com/thanks#contact 

ページをthanksにリダイレクトすると、#contactのメインURLがスティックになりますか?

htaccessまたはPHP、またはJSを使用して除外/削除するにはどうすればよいですか?

+0

あなたの解決策はFirefoxでは機能しませんでした。 – user5307298

答えて

1

この質問は以前に尋ねられます。

redirect is keeping hash

答えだったとしてマーク応答:

Locationヘッダで空のハッシュを指定することで、「私はそれがどのように停止しない」に簡単な答え:

header('Location: /account.html#');

ただし、この動作は全面的に保証されません。私のクイックテストでWebKitとIE9で動作するようです。それにもかかわらず、あなたはHTTP仕様のブラックホールを見つけました。

+0

まず、誰も私がそうしたようにそれほど明確に尋ねなかった。ではない?第二に、あなたが参照した解決策は、私が試したので受け入れられないし、まったく動作しませんでした。 urlの最後に不必要な#が追加されました。それは意味をなさないでしょうか? – user5307298

+0

私の意見では、それは単なる回避策であり、良い解決策ではありません。しかし、これは私が見つけた解決策であり、少なくとも2013年には「HTTP仕様のブラックホール」と主張しています。誰かがより洗練された解決策を持っていない限り、あなたはそれと一緒に暮らさなければならないかもしれません – Tore

+0

実際には、ここで解決策を試してみてください。その一つが助けになるかもしれません:https://stackoverflow.com/questions/16773111/removing-anchor-hash- from-url – Tore

関連する問題