Mauvaise configuration Apache ou Codeigniter? Decoded chaîne de requête

  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Août 11th, 2010, 8:52 am

Salut à tous,

Im travaillant pour un site et ils ont une fonction de suivi URI où il passe les identifiants et il a besoin de prendre alternativement dans les URI codé, comme celui-ci...

Code: [ Select ]
http://tracking.foobar1.com/9/1091/2115/u/http%3A%2F%2Fwww.foobar2.com%2Ftest-dir%2F


Il s'agit d'un fichier htaccess. Dans le répertoire principal qui ressemble à ceci (Sa fait beaucoup plus grand, mais j'ai enlevé toutes les autres lignes sauf 3, le problème persiste avec le htaccess de travail comme cela)...

Code: [ Select ]
RewriteEngine on
RewriteCond !^(index\.php|images|robots\.txt|css|js)
RewriteRule ^(.*)$ /index.php?click/index/ [L]
  1. RewriteEngine on
  2. RewriteCond !^(index\.php|images|robots\.txt|css|js)
  3. RewriteRule ^(.*)$ /index.php?click/index/ [L]


Je pense que le. htaccess fonctionne bien, parce que si je le supprimer, il semble bien. Il envoie la requête vers le bon fichier PHP (/ index.php? Cliquez / index /...), Et que le fichier PHP a besoin d'utiliser la variable $ _SERVER ["QUERY_STRING"].

Le problème est, en appelant...
Code: [ Select ]
http://tracking.foobar1.com/9/1091/2115/u/http%3A%2F%2Fwww.foobar2.com%2Ftest-dir%2F


Causes $ _SERVER ["QUERY_STRING"] dans le script PHP qui doit être...
Code: [ Select ]
$_SERVER['QUERY_STRING'] = /9/1091/2115/u/http:/www.foobar2.com/test-dir/

Au lieu de...
Code: [ Select ]
$_SERVER['QUERY_STRING'] = /9/1091/2115/u/http%3A%2F%2Fwww.foobar2.com%2Ftest-dir%2F


Il ne fonctionne pas même si je utiliser un chemin direct comme celui-ci...
Code: [ Select ]
http://tracking.foobar1.com/index.php?/9/1091/2115/u/http%3A%2F%2Fwww.foobar2.com%2Ftest-dir%2F


C'est un CodeSnuffer (CodeIgniter) installation. Ils récemment migré vers un nouveau serveur et mis à jour leurs PHP à partir de PHP4 à 5,2. X, pas sûr que ce qui compte, mais...Les scripts doit se pencher sur la variable $ _SERVER ["QUERY_STRING"] mais pour une autre raison. Je ne sais pas si le fichier htaccess. A été modifié après la migration, mais il ya une chance raisonnable et ce n'était pas si thats le cas, cette configuration a été tout fonctionne correctement avant.

Quoi qu'il en soit, se rapportant à CodeIgniter, j'ai un script qui prend d'entrée qui ressemble à ceci...

Code: [ Select ]
http://tracking.foobar1.com/9/1091/2115/u/http%3A%2F%2Fwww.foobar2.com%2Ftestdir%2F


Mais quand je fais cela dans CI...

PHP Code: [ Select ]
<?php
die(print_r($this->uri->uri_to_assoc(4),TRUE));
?>
  1. <?php
  2. die(print_r($this->uri->uri_to_assoc(4),TRUE));
  3. ?>


Je me procurer cette...(Probablement parce que CodeIgniter ou Apache est le décryptage des URI intégrés dans l'URI)

Array ([1091] => 2115 [u] => http: [www.foobar. Com] => testdir)

Au lieu de...

Array ([1091] => 2115 [u] => http% 3A% 2F% 2F% 2Fwww.foobar.com% 2Ftestdir)

Et j'ai la configuration config.php avec CI...

$ Config ["uri_protocol"] = "QUERY_STRING"; / / dans le fichier config.php (en raison de son remplacement. avec "_")

Il fonctionnait très bien, mais nous avons fait récemment une migration et de son parti pour sh * t (non positif, il a été la migration bien), je pensais que c'était Apache, mais maintenant Im se demandant si son CodeIgniter ou Apache, ou si quelqu'un a des idées Pourquoi diable il faire cela?
There's no place like 127.0.0.1, badass part is now it's ::1
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Août 11th, 2010, 8:52 am

  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de l’utilisateur
  • Inscription: Mai 22, 2004
  • Messages: 3415
  • Loc: Richland, WA
  • Status: Offline

Message Août 11th, 2010, 12:53 pm

CodeIgniter ne modifie pas la variable $ _SERVER. Ma conjecture est sa chose à voir avec le htaccess. Pouvez-vous mettre le reste?

Le système / / bibliothèques / fichier URI.php contient le code qui est utilisé pour manipuler l'URI dans CodeIgniter. Vous pouvez le consulter pour voir exactement ce qui ne CodeIgniter.
#define NULL (::rand() % 2)
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Août 11th, 2010, 2:10 pm

Même quand je lance le fichier htaccess. Avec juste ces 3 lignes, je suis toujours la même question. Je pensais que c'était. Htaccess ainsi, Im perplexe. Ouais, j'ai vérifié ce fichier sur l'ensemble, j'ai dû trace à travers elle.
There's no place like 127.0.0.1, badass part is now it's ::1
  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de l’utilisateur
  • Inscription: Mai 22, 2004
  • Messages: 3415
  • Loc: Richland, WA
  • Status: Offline

Message Août 11th, 2010, 2:27 pm

Essayez de créer un fichier de test simple avec le code ci-dessous et voir ce qui se passe quand on ne la demande.

Code: [ Select ]
<? print_r($_SERVER; ?>


Depuis il ne sera pas en cours d'exécution par CodeIgniter vous serez en mesure de voir si quelque chose lié à son apache / php / htaccess. Je l'ai fait sur mon serveur et tout semblait fonctionner à très bien.
#define NULL (::rand() % 2)
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Août 11th, 2010, 3:05 pm

Ouais je l'ai fait déjà ainsi. Cela fonctionne très bien de cette façon. Je pense toujours que son CodeIgniter. Im déroule aussi ce sur 2 machines, ne fonctionne pas sur non plus, donc Im moins en pensant son Apache et plus-si la pensée de son CodeSnuffer * tousse * je veux dire CodeIgniter.
There's no place like 127.0.0.1, badass part is now it's ::1
  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de l’utilisateur
  • Inscription: Mai 22, 2004
  • Messages: 3415
  • Loc: Richland, WA
  • Status: Offline

Message Août 11th, 2010, 3:08 pm

Hmmm, Ill ont à jouer avec cela.
#define NULL (::rand() % 2)
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Août 11th, 2010, 3:08 pm

Bon, ses définitivement CodeIgniter, damn...Je déteste ce CADRE POS.
There's no place like 127.0.0.1, badass part is now it's ::1
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Août 11th, 2010, 3:53 pm

Bon je viens de vérifier, le script fonctionne parfaitement sans. Htaccess si je accéder au fichier PHP directement, mais avec. Htaccess il s'échappe de l'URI. Il est donc. Je m'excuse, le script PHP est assez compliquée et ne une série de redirections JavaScript après charge, mais je les ai contournés.

C'est donc exact. Htaccess ou ma configuration Apache qui exécute les fichiers htaccess, ou cependant il travaille causes mon URI à décoder.

Code: [ Select ]
RewriteEngine on
RewriteCond !^(index\.php|images|robots\.txt|css|js)
RewriteCond !^(legacy|sale|ajax|cookie_test|curl_test|lead)
RewriteRule ^(.*)$ /index.php?click/index/ [L]
  1. RewriteEngine on
  2. RewriteCond !^(index\.php|images|robots\.txt|css|js)
  3. RewriteCond !^(legacy|sale|ajax|cookie_test|curl_test|lead)
  4. RewriteRule ^(.*)$ /index.php?click/index/ [L]
There's no place like 127.0.0.1, badass part is now it's ::1
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Août 13th, 2010, 12:37 pm

Theres AllowEncodedSlashes , Mais il semble que le youd soit messages d'erreurs 404 si cela avait quelque chose à voir avec elle.

Comme toutes les directives dans ce dernier morceau de code posté sont fournis par mod_rewrite, Im devinant ceci est un bon endroit pour commencer à chercher pour le codage des directives connexes.

Il ya le "noescape" drapeau pour obtenir des RewriteRule . Im ne sais pas si cela va s'appliquer à vous si. Sauf il ya eu un changement de version d'Apache avec la migration, et il y avait un changement de comportement de ce changement de version, il n'a pas de sens que ce serait tout d'un coup d'application.

Quote:
noescape | NE (pas d'échappement d'URI de la production)
Cet indicateur empêche mod_rewrite d'appliquer les règles habituelles d'échappement d'URI à la suite d'une réécriture. D'ordinaire, les caractères spéciaux (tels que%, $,;, et ainsi de suite) sera échappé dans leur quasi-hexcode (25%, 24%, et 3B%, respectivement); ce drapeau empêche que cela se produise. Cela permet de symboles pour cent à apparaître dans le résultat, comme dans

/(.*) RewriteRule foo / bar? Arg = P1 3d% \ $ 1 [R, NE]
qui ferait de / foo / Zed dans une demande sans danger pour / bar? arg = P1 = Zed.
Strong with this one, the sudo is.
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Août 13th, 2010, 3:21 pm

Bon rien oublier Ive a dit dans un de mes posts précédents. Cette question me conduit noix. htaccess Note: il n'est pas question sans que le fichier htaccess., mais je ne peux pas tester le cheminement de même avec un script autonome et non., je ne sais pas si ses quelque chose dans le httpd.conf ou. htaccess encore.

C'est le htaccess fichier....
Code: [ Select ]
RewriteEngine on
RewriteCond !^(index\.php|images|robots\.txt|css|js)
RewriteCond !^(legacy|sale|ajax|cookie_test|curl_test|lead)
RewriteRule ^(.*)$ /index.php?click/index/ [L]
RewriteCond %{query_string} ^blx_merchant=(.*)(&.*)blx_reference=(.*)(&.*)blx_amount=(.*)$
RewriteRule ^sale/(.*)$ /index.php?sale/index/%1/%3/%5 [L]
RewriteCond %{query_string} ^blx_merchant\x3d(.*)(\x26.*)blx_reference\x3d(.*)(\x26.*)blx_amount\x3d(.*)$
RewriteRule ^sale/(.*)$ /index.php?sale/index/%1/%3/%5 [L]
RewriteRule ^sale/(.*)$ /index.php?sale/index/ [L]
RewriteCond %{query_string} ^blx_merchant=(.*)(&.*)blx_reference=(.*)(&.*)blx_offer=(.*)$
RewriteRule ^lead/(.*)$ /index.php?lead/index/%1/%3/%5 [L]
RewriteCond %{query_string} ^blx_merchant\x3d(.*)(\x26.*)blx_reference\x3d(.*)(\x26.*)blx_offer\x3d(.*)$
RewriteRule ^lead/(.*)$ /index.php?lead/index/%1/%3/%5 [L]
RewriteRule ^lead/(.*)$ /index.php?lead/index/ [L]
RewriteRule ^legacy/(.*)$ /index.php?legacy/index/ [L]
RewriteRule ^ajax/(.*)$ /index.php?ajax/index/ [L]
RewriteRule ^cookie_test/(.*)$ /index.php?cookie_test/index/ [L]
RewriteRule ^curl_test/(.*)$ /index.php?curl_test/index/ [L]
  1. RewriteEngine on
  2. RewriteCond !^(index\.php|images|robots\.txt|css|js)
  3. RewriteCond !^(legacy|sale|ajax|cookie_test|curl_test|lead)
  4. RewriteRule ^(.*)$ /index.php?click/index/ [L]
  5. RewriteCond %{query_string} ^blx_merchant=(.*)(&.*)blx_reference=(.*)(&.*)blx_amount=(.*)$
  6. RewriteRule ^sale/(.*)$ /index.php?sale/index/%1/%3/%5 [L]
  7. RewriteCond %{query_string} ^blx_merchant\x3d(.*)(\x26.*)blx_reference\x3d(.*)(\x26.*)blx_amount\x3d(.*)$
  8. RewriteRule ^sale/(.*)$ /index.php?sale/index/%1/%3/%5 [L]
  9. RewriteRule ^sale/(.*)$ /index.php?sale/index/ [L]
  10. RewriteCond %{query_string} ^blx_merchant=(.*)(&.*)blx_reference=(.*)(&.*)blx_offer=(.*)$
  11. RewriteRule ^lead/(.*)$ /index.php?lead/index/%1/%3/%5 [L]
  12. RewriteCond %{query_string} ^blx_merchant\x3d(.*)(\x26.*)blx_reference\x3d(.*)(\x26.*)blx_offer\x3d(.*)$
  13. RewriteRule ^lead/(.*)$ /index.php?lead/index/%1/%3/%5 [L]
  14. RewriteRule ^lead/(.*)$ /index.php?lead/index/ [L]
  15. RewriteRule ^legacy/(.*)$ /index.php?legacy/index/ [L]
  16. RewriteRule ^ajax/(.*)$ /index.php?ajax/index/ [L]
  17. RewriteRule ^cookie_test/(.*)$ /index.php?cookie_test/index/ [L]
  18. RewriteRule ^curl_test/(.*)$ /index.php?curl_test/index/ [L]


Et ceci est mon index. php...
PHP Code: [ Select ]
<?php
die($_SERVER['QUERY_STRING]);
?>
  1. <?php
  2. die($_SERVER['QUERY_STRING]);
  3. ?>


Quand je demande ce (décodage)...
Quote:
http://localhost/9/1091/2115/u/http%3A% ... est-dir%2F


Il sorties (non décodé)...2F% [couvertures dans / etc...]
PHP Output a écrit:
click/index/9/1091/2115/u/http: / www.foobar.com/test-dir/


S'il vous plaît Note: j'ai dû ajouter à mon hôte virtuel...
Code: [ Select ]
AllowEncodedSlashes On


C'est la façon dont il est également configuré sur le serveur. Sinon, elle renvoie une erreur 404.

Est-il encore besoin de cette directive est activée? Im pas trop bien avec. Htaccess, je n'ai pas écrit ce.

Im allant à la recherche dans ce genre de choses pour les prochaines heures. Vous n'avez pas idée à quel point j'apprécie les réponses à ce fil.
There's no place like 127.0.0.1, badass part is now it's ::1
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Août 13th, 2010, 4:10 pm

Bon, l'% réelle (REQUEST_URI) ou% (QUERY_STRING) au niveau du serveur. Htaccess est décodée, ce qui est faux, je crois. Mon fichier PHP a le bon REQUEST_URI seulement quand. Htaccess n'est pas utilisé.
There's no place like 127.0.0.1, badass part is now it's ::1
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Août 13th, 2010, 6:42 pm

Je pense toujours que son mod_rewrite décodage ici après avoir regardé jusqu'à mod_rewrite décode .

Mon train courant de pensée est d'utiliser RewriteMap à réencoder la chaîne de requête, mais je viens d'avoir une frappe à ma porte et thats une idée demi-cul. :)
Strong with this one, the sudo is.

Afficher de l'information

  • Total des messages de ce sujet: 12 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 192 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC