1

サーバー上に小さなテキスト ファイルのコレクションがあります。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」であり、ハッシュがあり、欠落した後です。

名前にハッシュが含まれるファイルは避けることができましたが、他のエンコードされた文字がエンコードされていないのに、ハッシュがエンコードされていないのはなぜでしょうか。

4

1 に答える 1

1

書き換えルールでBフラグを使用する必要があります。

RewriteRule ^(.*).json$ /json.php?file=$1.txt [B]
于 2012-09-21T03:13:21.113 に答える