3

最近これに気づいた..

base64 エンコーディングで urlencode を使用して、暗号化された画像リンクを URL に送信するため、URL に %2B の ie + 記号がいくつかあります。

PHPでGETでURLにアクセスすると

image.php?q={encoded}

$_GET['q'] を実行すると、URL デコードせずに正しいデータが取得されます。つまり、%2B は + などに変換されます。

しかし、私は最近、このようなhtaccessを書きました

 RewriteRule ^image/(.*)?$ image.php?q=$1 [NC,L]

そして、$_GET['q'] データにアクセスすると...すべての %2B がスペースなどに置き換えられたので、実行する必要があります

str_replace(' ','+',$_GET['q']) 

次に、復号化して画像リンクを取得します..

なぜこれが起こっているのですか?... htaccessなどでデフォルトの標準を設定する必要がありますか? どんな助けでも大歓迎です。

4

1 に答える 1

1

書き換えルールは、Percent-Escape-Sequences を使用して URL をデコードし、デコードされた文字列は "%2B" が "+" になった状態でクエリ文字列に再度挿入され、PHP はそれらを " " (スペース) にデコードします。

mod_rewrite には次のフラグがあります。B

ドキュメントを参照してください: http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_b

于 2013-07-28T13:35:16.280 に答える