サーバー上に小さなテキスト ファイルのコレクションがあります。URL は次のようになります: http://mysite.com/My%20Text%20File.txt
テキスト ファイルの URI をパラメーターとして受け取り、テキスト ファイルを JSON に変換する小さな PHP スクリプトがあります: http://mysite.com/json.php?file=/My%20Text%20File.txt
そして、それをきれいにする書き換えルールがあります: RewriteRule ^(.*).json$ /json.php?file=$1.txt
そして、それはうまく機能します。JSON の URI は、ファイル拡張子を除いて、テキスト URI と同じになりました。しかし、名前にエンコードされた has を含むテキスト ファイルがある場合: http://mysite.com/Text%20File%20%231.txt
Apache は問題なくテキスト ファイルを開きます。同様に、「実際の」URI は機能します: http://mysite.com/json.php?file=/Text%20File%20%231.txt
しかし、書き換えルールはそれを混乱させます。したがって、PHP が認識する「ファイル」GET パラメータは「/Text%20File%20」であり、ハッシュがあり、欠落した後です。
名前にハッシュが含まれるファイルは避けることができましたが、他のエンコードされた文字がエンコードされていないのに、ハッシュがエンコードされていないのはなぜでしょうか。