Url rewriting et passage de parametres

Url rewriting et passage de parametres - PHP - Programmation

Marsh Posté le 14-02-2008 à 17:44:14    

Bonjour,
J'ai un petit soucis avec une règle de mon URL rewriting :
 
RewriteRule ^(.*)-c-(.*).html$ boutique.php?cPath=$2 [QSA,L,NC]
 
 
Quand j'accède à cette page, ça fonctionne bien, mais quand je veux accèder à cette page en y ajoutant d'autres paramètres, cela ne fonctionne pas (les paramètres ne sont pas passés)
 
Par exemple, si j'accède à cette page :
http://www.mondomaine.fr/boutique. [...] lter_id=11
il me renvoit sur :
http://www.mondomaine.fr/saxophone [...] 48_54.html
 
mais quand j'affiche  
filter <?=$_REQUEST["filter_id"];?> c'est vide
et quand j'affiche :
cPath <?=$_REQUEST["cPath"];?>
j'ai la bonne valeur (42_48_54)
 
Comment faire pour passer les paramètres ?  
Je pensais que QSA servait justement à ça.
 
Merci pour votre aide,
 
Axel

Reply

Marsh Posté le 14-02-2008 à 17:44:14   

Reply

Marsh Posté le 14-02-2008 à 21:29:25    

Les trucs que tu passes en GET, pourquoi tu y accèdes pas par $_GET ? $_REQUEST ça date de 1973.
Et pour regarder tout ce qui passe en GET, tu fais print_r($_GET), qui va t'afficher tout le tableau.

 

Sinon pour ton problème, je ne comprend rien, déja je crois que tu as inversé tes 2 URLS, et peux-tu donner un exemple d'adresse à laquelle tu "ajoutes d'autres paramètres" ?


Message édité par theredled le 14-02-2008 à 21:30:39

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 15-02-2008 à 09:13:21    

Je suis un grand nostalgique :) bon, le $_REQUEST ou $_GET c'est pareil.  
Quand je fait un print_r($GET) j'obtiens ça :
 
tableau Array
(
    [cPath] => 44_93
)
 
Pour ce qui est de passer des paramètres, c'est un formulaire qui le fait :
 

Code :
  1. <form name="filter" action="boutique.php" method="get">
  2. <b>Afficher :</b> &nbsp;
  3. <input type="hidden" name="cPath" value="44_93">
  4. <input type="hidden" name="sort" value="3a">
  5. <select name="filter_id" onchange="this.form.submit()">
  6. <option value="" SELECTED>Tous fabricants</option>
  7. <option value="169">Alhambra</option>
  8. <option value="44">Alvaro</option>
  9. <option value="45">Cuenca</option>
  10. <option value="171">Passion</option>
  11. <option value="46">Stagg</option>
  12. <option value="12">Yamaha</option>
  13. </select>
  14. </form>

Reply

Marsh Posté le 15-02-2008 à 10:00:40    

Je comprend pas tout là [:totoz]
 
Ton formulaire appelle l'URL "boutique.php", comment tu veux qu'il passe dans ta rewriteRule qui s'applique à l'URL "(.*)-c-(.*).html" :??:


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 15-02-2008 à 12:09:22    

En fait, je sais pas trop comment fonctionne le principe de l'URL rewriting. J'ai installé un module (SEO) sur OsCommerce. Ce que j'ai compris c'est que le htaccess transforme les "belles" adresses en adresse "ancienne" et qu'il faut dans le code, transformer les "anciennes" adresses pour afficher des belles adresses.
Donc, si j'ai bien compris, la solution serait de faire une fonction qui transforme dans le code du formulaire, l'ancienne adresse boutique pour mettre la "belle" adresse comme champ "action" ?
 
Un autre truc que je comprends pas, c'est comment fait il pour transformer l'ancienne adresse en nouvelle adresse ? (quand j'accède à boutique.php avec des arguments, il m'affiche dans le champ adresse de mon navigateur la "belle" adresse)
 
Merci pour les explications,
 
Axel

Reply

Marsh Posté le 15-02-2008 à 12:25:24    

axel584 a écrit :

En fait, je sais pas trop comment fonctionne le principe de l'URL rewriting. J'ai installé un module (SEO) sur OsCommerce. Ce que j'ai compris c'est que le htaccess transforme les "belles" adresses en adresse "ancienne" et qu'il faut dans le code, transformer les "anciennes" adresses pour afficher des belles adresses.
Donc, si j'ai bien compris, la solution serait de faire une fonction qui transforme dans le code du formulaire, l'ancienne adresse boutique pour mettre la "belle" adresse comme champ "action" ?


Evite l'URL-rewriting sur les formulaires, tu dois appeler une page php toute conne sinon c'est galère. Ou alors t'envoie tout en Post.
 
Ensuite seulement, à la fin du script appelé, tu redirigeras vers une belle adresse.
 

axel584 a écrit :

Un autre truc que je comprends pas, c'est comment fait il pour transformer l'ancienne adresse en nouvelle adresse ? (quand j'accède à boutique.php avec des arguments, il m'affiche dans le champ adresse de mon navigateur la "belle" adresse)


Soit tu l'écrit direct dans le code html, soit tu te fais une/des fonctions qui te créent tes belles adresses, par ex à partir des anciennes.


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 17-02-2008 à 20:42:43    

theredled a écrit :


Evite l'URL-rewriting sur les formulaires, tu dois appeler une page php toute conne sinon c'est galère. Ou alors t'envoie tout en Post.


 
C'est effectivement là que ça coince (quand j'essaye de passer à mes "belles" adresses des parametres)... néanmoins, je sais que c'est possible et j'aimerai beaucoup y arriver.
 
Quelqu'un a t'il une idée de comment faire ?
 
Merci beaucoup,
 
Axel

Reply

Marsh Posté le 18-02-2008 à 14:36:36    

axel584 a écrit :

 

C'est effectivement là que ça coince (quand j'essaye de passer à mes "belles" adresses des parametres)... néanmoins, je sais que c'est possible et j'aimerai beaucoup y arriver.

 

Quelqu'un a t'il une idée de comment faire ?

 

Merci beaucoup,

 

Axel


Je vois pas l'intérêt mais la façon la plus propre c'est soit d'envoyer les données en post, soit en adresse "moche" en get, puis de redirigier (en php, donc on voit rien coté client) vers la belle adresse.

 

Sinon c'est javascript, mais ce serait inutile, pas pratique, pas accessible et pas propre.


Message édité par theredled le 18-02-2008 à 14:37:01

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 08-09-2008 à 12:20:25    

tien j'ai le même problème. Ma règle est :  
 
RewriteRule ^([a-z0-9_-]*)\.html$ /fr/index.php?page=$1 [L]
 
mais dans mes pages je voudrais rajouter des liens pour passer d'une langue à l'autre. Donc je voulais simplement mettre des liens genre :  
?lang=fr ou ?lang=en ...
Mais impossible de récup avec $_GET['lang']. Pourtant quand je fais $_SERVER['REQUEST_URI'] il y a bien le ?lang=**.


---------------
Topics : NFSU2 - NFS : Most Wanted - Volant PC Site :  NFS-Mania.com
Reply

Marsh Posté le 08-09-2008 à 12:21:59    

Regarde dans $_GET. Et il manque le QSA pour que les paramètres soient rajoutés :

Code :
  1. RewriteRule ^([a-z0-9_-]*)\.html$ /fr/index.php?page=$1 [QSA,L]

Reply

Marsh Posté le 08-09-2008 à 12:21:59   

Reply

Marsh Posté le 08-09-2008 à 14:10:25    

je t'aime  :love:  
 
merci  :jap:


---------------
Topics : NFSU2 - NFS : Most Wanted - Volant PC Site :  NFS-Mania.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed