2009-08-16 18 views
5

は、このようなURLに302ステータスコードで応答を送信することが可能です:アンカー付きのURLにHTTPリダイレクトを送信できますか?

http://mysite.com/something/#somethingelse

+3

これを試しましたか? – innaM

+1

あなたはどの言語を使用していますか? –

+0

Webサーバー?あなたがmod_rewriteを使ってこれをやっているのであれば、#がエスケープされても動作しません。 – karim79

答えて

2

PHPからそうすることに何ら問題はないように見える:

Header(
    "Location: http://en.wikipedia.org/wiki/HTTP#Status_codes", 
    true, 
    302 
); 
1

はい。それはサーバーにハッシュを送信しないブラウザーで、それ以外の方法ではありません。

5

HTTP仕様に続いて、Location header fieldの値は、absoluteURIの値である必要があります。そして、それは、(彼らはちょうどabsoluteURIでabsoluteURIでから名前を変更)RFC 3986に応じて次のとおりです。

absolute-URI = scheme ":" hier-part [ "?" query ] 

だから、理論的断片は、値の一部として許可されていません。しかし、ブラウザはそれを処理することができます。

2

厳密な意味で、RFC2616は、絶対URIの一部ではないため、ロケーションヘッダー値のフラグメントを許可しません。しかし、IETF's HTTP rewrite draftthis was fixedと。 http://www.greenbytes.de/tech/tc2231/redirects.html

だから、答えイスト:はい、あなたが場所ヘッダーのURIで断片を置くことができる最近

JulianはLocationヘッダ中のブラウザでは、URIのフラグメントをどのように処理するかを比較し(それが持つどのようなHTMLアンカータグの契約です)我慢します。

関連する問題