2016-09-03 20 views
2

私は.htaccessで、次のようなものがある:.htaccessでハッシュ(#)文字をエスケープする方法は?

十分なシンプル、そしてほとんどの場合のために働く
RewriteRule ^a/(.+)$ index.php?data=$1 [L] 

、私は、次のURLを使用する場合を除き:

http://example.com/a/hello%23abc 

を、私は、これはdata GETを設定することを期待変数はhello#abcになりますが、代わりに破損します。私は、Apache「エスケープを解除」の文字は、次のURLを作成するので、それが壊れることを想定しています。おそらくそれはhellodata GET変数を設定していますされている理由

index.php?data=hello#abc 

これを修正する方法はありますか?

ありがとうございました。

+0

その部分は "フラグメント" と呼ばれ、あなたはこのようにそれを得ることができます:「( $のURL =でもparse_url http://domain.com/site/gallery/1 #photo45 "); echo $ url ["fragment"]; //この変数にはフラグメントが含まれています この例をhttp://stackoverflow.com/a/2317518/4817575に投稿 –

+0

@JatinderKaur知っていますが、私はそれをしたくありません - 私はURLを書き直したい'index.php?data = hello%23abc' – think123

+0

実際にどのURLが書き換えられるかを見るには[L、R]を使用してください。 –

答えて

2


[B]フラグがのRewriteRuleを適用する前に英数字以外の 文字をエスケープするように指示する(Apacheの2.2で利用可能)をお使いの場合に役立つはず[B]フラグを使用変換。

http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_b

RewriteRule ^a/(.+)$ index.php?data=$1 [L,B] 
+0

ああ、まさに私が探していたものです。ありがとう! – think123

+0

@ think123、よろしくお願いします – RomanPerekhrest

関連する問題