3

$_REQUEST[] スーパーグローバルを使用する PHP スクリプトを開発しました。典型的なクライアント要求は、次のもので構成されます。

http://host.name/socnet/add.php?shortid=1&author=NewUser2&comment=Dad%20dad%20dad

この URL は、次の書き換えルールに従って、本番環境の Apache によって同等の https:// URL に書き換えられます。

RewriteRule ^socnet/add.php(.*) https://%{SERVER_NAME}/socnet/add.php$1 [R,L]

PHP 5.3.2 で開発し、NetBeans でデバッグしている間、すべてが期待どおりに動作します$_REQUEST['comment']="Dad dad dad"

しかし、PHP 5.2.4 を実行し、上記の URL 書き換えを行う VPS ホスト環境にデプロイすると$_REQUEST['comment']="Dad%20dad%20dad"...

したがって$_REQUEST['comment']、5.2.4 と私の書き換えルールで期待どおりにデコードされた URL ではないようです。

なぜこれが起こっているのか、そして賢明な回避策についてのアイデアをいただければ幸いです。PHP のバージョンに関連する問題ですか、それとももっと微妙な問題ですか? 以前の展開時にこの問題に遭遇し、どのように解決したかを知りたいです。

4

1 に答える 1

1

mod_rewrite がエンコードしているため、2 回エンコードされていると思われます。私はこれを試していませんが、 (.*) を一致させる代わりに、 を に変更してみて[R,L]ください[R,L,QSA]QSAquery-string-appended を表します。

編集

landstatic 自身が見つけた正しいオプションはNE、エスケープなしを表すものです。

于 2010-07-21T16:22:36.270 に答える