URL Rewriting et plusieurs id à la suite

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

kitten13
WRInaute discret
WRInaute discret
 
Messages: 213
Inscription: 30 Avr 2007

URL Rewriting et plusieurs id à la suite

Message le Lun Oct 12, 2009 12:47

Bonjour,

Je but sur une règle dont voici le topo:

Code: Tout sélectionner
RewriteRule ^([^/]+)t([-]?[0-9]+)[b]([0-9]+)([0-9]+)[/b]\.html   
/index.php?articles=news&catid=$3&subcatid=$4&cityid=$2 [QSA]


catid et subcatid peuvent prendre 1 ou 2 chiffre max.

Le problème viens dés deux dernières parenthèses qui sont mal interpréter.

Code: Tout sélectionner
# catid =4 et subcatid = 2 et cityid = 9

si url http://localhost/articles-vetements-t942.html ça fonctionne

mais si je fait

Code: Tout sélectionner
# catid =4 et subcatid = 27 et cityid = 9

si url http://localhost/articles-vetements-t9427.html ça ne marche pas

Je précise que je souhaite pas séparer les id (catid/subcatid) par des tirets ou slash etc ...

Merci d'avance pour votre aide ;)

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Re: URL Rewriting et plusieurs id à la suite

Message le Lun Oct 12, 2009 13:48

Salut

Je connais pas assès bien l'url rewriting pour te répondre, mais y'a une autre solution au problème :

Si tu passe une seul variable numérique et ensuite, tu tritures la variable en PHP pour resortir les bonnes variables.

Genre (exemple rapide sans test hein...) : (tu peux faire
Code: Tout sélectionner
RewriteRule ^([^/]+)t([-]?[0-9]+)\.html
/index.php?articles=news&params=2 [QSA]


Code: Tout sélectionner
$catid = 0;
$subcatid = 0;
$cityid = 0;

$test = $_GET['params'];
$catid = substr($test, 0, 2);
$subcatid = substr($test, 2, 4);
$cityid = substr($test, 4, 6);


Juste une idée :)
Faudra adapter un peux à tes besoins, mais c'est un fonctionnement qui peux être envisagé.
De plus, si tu change l'ordre, suffit de modifier le script qui triture la variable params, le reste sera ok.

Pense aussi à faire un truc par defaut, genre : /articles-vetement-000000.html
De cette façon, tu peux aussi enlever la condition.

Bon, ça répond pas à ta question ceci dit ^^
Sky

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Re: URL Rewriting et plusieurs id à la suite

Message le Lun Oct 12, 2009 13:48

Les balises [code] svp :(

kitten13
WRInaute discret
WRInaute discret
 
Messages: 213
Inscription: 30 Avr 2007

Re: URL Rewriting et plusieurs id à la suite

Message le Lun Oct 12, 2009 19:23

Dsl mat... pour les balises ;)

sky merci pour ton aide, substr permet retourner un segment de chaîne donc id mais ne gère pas les possibilités 1 ou 2 chiffres dans id comme le ferait une regexp (htaccess ou php) :? A moins que je me trompe

Sinon pour revenir à ma règles j'ai essayer ceci

Code: Tout sélectionner
([0-9]{1,2})

([0-9]{1,2}) Autorise un ou deux chiffres

Code: Tout sélectionner
RewriteRule ^([^/]+)t([-]?[0-9]+)[b]([0-9]{1,2})([0-9]{1,2})[/b]\.html


Mais ca ne marche pas, enfaite il me délimite mal id catid de subcatid, par contre si je mets un caractère entre les deux alors cela fonctionne, exemple avec (s)

Code: Tout sélectionner
RewriteRule ^([^/]+)t([-]?[0-9]+)[b]([0-9]+)s([0-9]+)[/b]\.html


mais comme dit précédemment je préfère éviter tout caractère :cry:

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Re: URL Rewriting et plusieurs id à la suite

Message le Mar Oct 13, 2009 7:40

Salut
Si tu utilises des 0 quand y'a pas de nb, ça marchera.

Exemple avec aucun id : /articles-vetement-000000.html
Exemple avec un le 1er id : /articles-vetement-010000.html
Exemple avec le 2nd id, mais sans le 1er : /articles-vetement-002900.html
Exemple avec le 2nd id et le 3ème, mais sans le 1er : /articles-vetement-002982.html
Exemple avec un seul nombre a chaque id : /articles-vetement-050601.html

Si y'a qu'un chiffre, tu met un 0 devant.

Si tu conçoit une bonne fonction ou classe pour extraire tes valeurs, c'est assès simple comme fonctionnement.

Mais ceci est tjrs parce que je n'utilise plus d'url rewritng complexe depuis un bon moment ^^

Sky

kitten13
WRInaute discret
WRInaute discret
 
Messages: 213
Inscription: 30 Avr 2007

Re: URL Rewriting et plusieurs id à la suite

Message le Mar Oct 13, 2009 9:24

En faite je le fait déjà un exemple

Code: Tout sélectionner
$catid?$catid:0
$subcatid?$subcatid:0


la règle délimite bien catid de subcatid si subcatid contient un seul chiffre mais pas si contient 2 chiffre

Pour l'instant je suis obliger de mettre un caractère entre les deux (un s) mais j'aimerais m'en passer :cry:

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Re: URL Rewriting et plusieurs id à la suite

Message le Mar Oct 13, 2009 9:41

Tu n'as pas compris ce que j'ai dit, ou je me suis mal exprimé.

Ce que je t'ai montré, fonctionne très bien. Avec 1 ou 2 chiffres.

Il faut juste prévoir le bon nombre de 0.

Sky

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Re: URL Rewriting et plusieurs id à la suite

Message le Mar Oct 13, 2009 9:52

Voici un exemple fonctionnel :
Code: Tout sélectionner
<?php
function string2ids($uri_params)
{
    $valeurs = array(
        'catid' => 0,
        'subcatid' => 0,
        'cityid' => 0
    );

    if(strlen($uri_params) == 6)
    {
        $valeurs['catid'] = (int)substr($uri_params, 0, 2);
        $valeurs['subcatid'] = (int)substr($uri_params, 2, 2);
        $valeurs['cityid'] = (int)substr($uri_params, 4, 2);
    }

    return $valeurs;
}


$params = (!isset($_GET['params']))? 0 : (string)$_GET['params'];

$mesIDS = string2ids($params);

echo '
<p>
    catid : '.$mesIDS['catid'].'<br />
    subcatid : '.$mesIDS['subcatid'].'<br />
    cityid : '.$mesIDS['cityid'].'
</p>';
?>


Bon, dit moi si je persiste dans une voie qui ne te plais pas ^^

kitten13
WRInaute discret
WRInaute discret
 
Messages: 213
Inscription: 30 Avr 2007

Re: URL Rewriting et plusieurs id à la suite

Message le Mar Oct 13, 2009 10:35

Re,

Merci pour ton aide, tes efforts. En faite j'avais pas bien saisie ton raisonnement mais c'est plus clair.

Cependant cette méthode est bien à implémenter à la construction des pages, je doit fait modifier plusieurs page (60) est je t'avoue ne pas avoir le courage.

Sinon j'ai résolu mon problème en faisant comme ceci :

une règle pour un id de 1 chiffre et une autre pour un id de 2 chiffres puis c'est tout ;)

Code: Tout sélectionner
RewriteRule ^([^/]+)t([-]?[0-9]+)[b]([0-9]+)([0-9]{2})[/b]\.html   
/index.php?articles=news&catid=$3&subcatid=$4&cityid=$2 [QSA]

RewriteRule ^([^/]+)t([-]?[0-9]+)[b]([0-9]+)([0-9]{1})[/b]\.html   
/index.php?articles=news&catid=$3&subcatid=$4&cityid=$2 [QSA]


petit mémo à retenir:

Liste des quantifieurs :

"Zéro ou une fois" : point d'interrogation ?
"Zéro, une ou plusieurs fois" : étoile *
"Au moins une fois" : signe plus +
"Deux fois" : {2}
"De deux à quatre fois" : {2,4}
"Au moins deux fois" : {2,}

À noter que :

? est équivalent à {0,1}
* est équivalent à {0,}
+ est équivalent à {1,}


Merci encore pour ton aide ;)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google goo.gl

  • Analyse des backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Recherche de citations d'un site en texte brut
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités