2010-07-21 6 views
3

J'ai développé un script PHP qui utilise $ _REQUEST [] superglobal. Une demande client typique peut consister en:

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

Cette URL est réécrite par Apache dans mon environnement de production à un https équivalent: // URL selon la règle suivante:

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

Tout en développant avec PHP 5.3.2 et le débogage avec NetBeans tout fonctionne comme prévu $_REQUEST['comment']="Dad dad dad"

Cependant quand je déployé à mon environnement hôte VPS en cours d'exécution PHP 5.2.4 et qui fait l'URL rewr ition décrit ci-dessus $_REQUEST['comment']="Dad%20dad%20dad" ...

Il semble donc que $_REQUEST['comment'] est URL non décodé comme prévu avec 5.2.4 et ma règle de réécriture

Toutes les idées pour lesquelles cela se produit et une solution raisonnable serait être grandement apprécié. Est-ce un problème lié à la version PHP ou quelque chose de plus subtil? Intéressé d'entendre de toute personne qui a rencontré ce problème au moment du déploiement avant et comment ils l'ont résolu.

+1

Correction de l'ajout de [NE] Pas d'option d'échappement. Voir le commentaire (5) sur issues.apache.org/bugzilla/show_bug.cgi?id=34602. – codeasone

+0

Donc la règle de réécriture devient 'RewriteRule^socnet/add.php https: //% {SERVER_NAME} /socnet/add.php [R, L, QSA, NE]' – codeasone

Répondre

1

Je suppose que mod_rewrite le code, ce qui le conduit à être codé deux fois. Je n'ai pas essayé ceci, mais au lieu de faire correspondre (. *), Essayez de changer le [R,L] à [R,L,QSA]. QSA est l'abréviation de query-string-added.

EDIT

L'option correcte trouvée par landstatic est lui-même NE qui signifie pas d'échappatoire.

+0

Bonjour, J'ai essayé de changer la règle de réécriture à: 'RewriteRule^socnet/add.php https: //% {SERVER_NAME} /socnet/add.php [R, L, QSA]' Mais hélas, un test rapide dans NetBeans révèle: '$ _REQUEST ['comment '] = Dad% 20dad% 20dad' – codeasone

+1

Correction de mon ajout [NE] Pas d'option d'échappement. Voir le commentaire (5) sur https://issues.apache.org/bugzilla/show_bug.cgi?id=34602 – codeasone

+0

Merci pour votre aide evil3. – codeasone