web-dev-qa-db-ja.com

mod_rewriteを使用して、ハッシュ文字を含むパスをクエリ文字列に変換します

PHPプロジェクトで、URLのパス内でハッシュ文字(#)を送信する必要があります。( http://www.example.com/parameter#23 /parameter#67/index.php )urlencodeがそれを可能にし、ハッシュを%23に変換すると思った

しかし、今では、urlencodedハッシュでさえも、ブラウザがすべてを右側のURLフラグメント(またはクエリ)として扱うように強制することがわかります。

ハッシュを渡す方法はありますか、またはurlencodeの前に文字置換を行う必要がありますか?

追加して編集(2017年9月19日):

間違った質問をしていたことがわかりました。私の問題は、パス内でハッシュ文字を使用することではなく(エンコードは機能します)、mod_rewriteを使用してクエリ文字列に変換することでした。 RewriteRule内で再エンコードできませんでした。一致するようにタイトルを編集します。

私が使用していた書き換えルールは次のとおりです。

RewriteEngine On
# convert path strings into query strings
RewriteRule "^(.*)/(.*)/hashtags.php"      /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L]

Bタグを追加するとすぐに、正常に機能しました。

RewriteEngine On
# convert path strings into query strings
RewriteRule "^(.*)/(.*)/hashtags.php"      /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L,B]
35
Mark

URLのハッシュを%23でエンコードします

http://Twitter.com/home?status=I+believe+in+%23love

"私は愛を信じます"

URLエンコードリファレンス: http://www.w3schools.com/tags/ref_urlencode.asp

85
Spider