URL rewriting et nombre de parametres variable!

WRInaute discret
Bonjour,
Voilà le petit hic que je rencontre:

Je souhaiterai utiliser la methode de la reecriture de l'url par URL rewriting.

Pour ce qui concerne un nombre de parametre bien definie, il n'y pas trop de pb.

Mais qd les parametres sont different et leur nombre aussi, comment puis-je ecrire mon .htaccess du coup?? 8O 8O
expl:
rprob.php3?sstheme=accessoire&nom=trucmuch

dc là: ya sstheme et nom, mais il pourrait y avoir

rprob.php3?ici=0&sstheme=accessoire&choix_type=cpu&choix_marque=olitec

Comment faire?? :roll:
 
WRInaute passionné
Bonjour et bienvenue sur les Forums de WebRankInfo !
Je te suggère de lire l'intro réservée aux nouveaux arrivants, tu y trouveras sûrement une mine d'informations utiles.

Pour revenir à ton problème...
Lorsqu'on attaque l'URL rewriting, il faut raisonner "à l'envers", c.à.d. en réfléchissant à la manière dont les URL seront présentées au monde extérieur.
Une fois ce style défini, c'est assez simple d'en extraire les règles de réécritures, même pour des paramètres variables en nombre/nom.

As-tu déjà défini le look de tes URL, tel que tu voudrais l'afficher?

Cordialement,

Dan
 
WRInaute passionné
Pour ce genre de problème, j'ai fait de la sorte

Pour
Code:
articles.php?pg=site12&doc=item0036
et aussi

Code:
articles.php?pg=site12

Il y a deux url_rewritting dans le .htaccess
dans l'ordre ce celui qui a le plus de parametre à celui qui a le moins de paramétres (à parametre identique)

Pour info après avoir vu ton site, je ne sais pas ce que donnera l'url_werrinting, s'il y a que des paramètres alpha, voire texte.
 
WRInaute occasionnel
Avec le composant ISAPI_Rewrite pour Windows (pourtant limité :lol: ) on peut boucler pour gérer un nombre de paramètres variable
Code:
RewriteRule /([^/]*)/([^/]*)(.*)page.asp(.+)? $3page.asp(?4$4&:\?)$1=$2 [N,I]
Le flag N permet de boucler
Une condition (variable 4) permet de savoir si l'on doit placer un ? (premier paramètre) ou un & (paramètres suivants).

La règle ci-dessus transforme:
h**p://www.domaine.com/page.asp?a=A&b=B&c=C
en
h**p://www.domaine.com/a/A/b/B/c/C/page.asp

Sans doute avez-vous la même possibilité sous Apache :wink:
 
WRInaute discret
De: hetzeld
As-tu déjà défini le look de tes URL, tel que tu voudrais l'afficher?
Lorsqu'on attaque l'URL rewriting, il faut raisonner "à l'envers", c.à.d. en réfléchissant à la manière dont les URL seront présentées au monde extérieur.

Disons que vu la complexité de mon nombre de parametres, je verai en fct.

absoluteweb:

Avec le composant ISAPI_Rewrite pour Windows (pourtant limité ) on peut boucler pour gérer un nombre de paramètres variable

Il me semble que ça serait plus de ce type là de composant rewrite qui me permettrait generer les urls, peut important le nombre de champs.

Je ne souhaite pas , bien entendu inscrire TOUS les parametres possibles dans mon .htacess :lol:

Quelqu'un pourrait-il m'expliquer un peu plus en details les conditions du composant ISAPI_Rewrite??

Thks.
 
WRInaute occasionnel
achaternet a dit:
Quelqu'un pourrait-il m'expliquer un peu plus en details les conditions du composant ISAPI_Rewrite??
C'est un composant pour IIS pas pour Apache...
Comme je l'indique, peut être que cette boucle est réalisable sous Apache avec le module de rewriting inclu (me dites pas qu'il y a un truc possible sous IIS et impossible sous Apache :lol: ).
 
WRInaute discret
RewriteRule /([^/]*)/([^/]*)(.*)page.asp(.+)? $3page.asp(?4$4&:\?)$1=$2 [N,I]
Je n'arrive pas a aboutir a autre chose que err 500 (int. serv error) avec cette expl ci ou
autre ds mon .htaccess.
Bon, j'ai testé avec easyphp (en transformant page.asp en page.php)
et en essayant different url.
Je ne sais pas ce qui ne va pas et j'avoue ss honte ne pas avoir reussi a executer correctement d'autre expl de ce genre:
ds .htaccess
RewriteEngine on
RewriteCond ...
RewriteRule ...
marche poa :? :?
Pour l'instant, ce que j'arrive a faire et qui fct (inspiré de jounal du net):
ds .htaccess:
<FilesMatch "^messages$">
ForceType application/x-httpd-php
</FilesMatch>
et le contenu de messages:

<?
$chain="rpro.php?";
$tab=explode("/",$REQUEST_URI);
$id=$tab[count($tab)-1];
$vars=explode("_",$id);
$nbvars=count($vars);
for ($i=0;$i<$nbvars;$i++)
{
if (strrpos($vars[$i],".html"))
{ $vars[$i]=strtok($vars[$i], ".");}
if (strrpos($vars[$i],"="))
{
eval("$$vars[$i];");
}
echo("<br>i: $i $vars[$i]");
$chain=$chain."$vars[$i]";
}
$vars[$nbvars-1]=strtok($vars[$nbvars-1], ".");
$test=$vars[$nbvars-1];
include("page1.php");
?>
cela fonctionnne.
La façon d'ecrire l'url :
../rpro.php?toto=modem&tata=carte en
../messages/toto=modem_tata=carte.html

La recup des variables fct zossi vers la page1.php

2EME VERSION:
messages:

<?
$chain="rpro.php?";
$tab=explode("/",$REQUEST_URI);
$id=$tab[count($tab)-1];
$vars=explode("_",$id);
$nbvars=count($vars);
echo("nb param: $nbvars<br>");
for ($i=0;$i<$nbvars;$i++)
{
if (strrpos($vars[$i],".html")) { $vars[$i]=strtok($vars[$i], ".");}
if (strrpos($vars[$i],"="))
{
$vars[$i]=ereg_replace("%20"," ",$vars[$i]);
echo("<H1><br>$vars[$i]<br></H1>");
eval("$$vars[$i];");
}
echo("<br>i: $i $vars[$i]");
if ($i<>0) {$chain=$chain."&";}
$chain=$chain."$vars[$i]";
}
$vars[$nbvars-1]=strtok($vars[$nbvars-1], ".");
$test=$vars[$nbvars-1];
echo("<H1> ce qui donne: $chain</H1>");
include("page1.php");
?>

car en fait, ds l'url j'ai des param de la forme rpro.php?toto=le meilleur des robots
d'ou le %20 pour le eval pour l'affectation des variables!

Bon voilà, ya pas PLUS SIMPLE ?? :roll:

thks
 
WRInaute passionné
Achaternet,

J'ai été faire un petit tour sur ton site et pense sincèrement qu'avant d'envisager une quelconque réécriture d'URL, il y aurait une phase de "nettoyage" d'URLs qui devrait être réalisée.

Un certain nombre de liens ne fonctionnent pas et une redirection sur le site de GrosBill suite au choix d'un article s'est même soldée par une erreur 500 (chez GrosBill) dûe très certainement à une URL "non comprise" :oops:

Le fait de réécrire des URLs va très certainement rendre cette opération de "re-design" beaucoup plus complexe qu'elle ne l'est déjà et, AMHA, il serait raisonnable de la reporter à plus tard.

Cordialement,

Dan
 
WRInaute discret
J'ai été faire un petit tour sur ton site et pense sincèrement qu'avant d'envisager une quelconque réécriture d'URL, il y aurait une phase de "nettoyage" d'URLs qui devrait être réalisée.

1/ Oui, je sais. En fait il y a un pb sur certains themes du site, je vais m'en occupé aprés..

2/ Il y a aussi des nettoyages de passage de parametre:
du genre:
rpro.php?toto=modem&titi=&tata=pci
en fait donc ds ce cas, il faudra que je n'affiche pas "titi=" qui ne vaut rien :lol:

Mon pb reste tj ss solution pour l'instant :(

AU SECOUR, tant que j'ai pas fait de modif sur mon site a propos des urls, google et les autres ne referenceront que la 1ere page, sniff
 
Discussions similaires
Haut