Paramètres optionnels?

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

r.mike
Nouveau WRInaute
 
Messages: 41
Inscription: Ven Oct 07, 2005 9:01

Paramètres optionnels?

Message le Jeu Oct 13, 2005 9:11

Commencons par le commencement :

Bonjour ... :D

Bon, je suis néophyte de l'url rewriting, j'arrive juste à bidouiller à partir de conditions existantes, mais je me trouve face à quelque chose qui me semble simple dans la logique mais compliqué quand on y connait pas grand chose.

En fait j'ai un site basé sur une structure de page principale : -structure.php

Ensuite j'y insère des includes pour les différents contenus :
-listing.php pour les listing de produits par catégorie(2 variables nécessaire, la catégorie, le numéro de la page à afficher)
-produit.php pour l'affichage d'une fiche produit (3 variables, la catégorie, la page et le produit)

J'utilise donc :
Code: Tout sélectionner
RewriteRule ^(.*)_(.*)_(.*)_(.*)\.(.*)$ structure.php?include=$1&categorie=$2&page=$3&produit=$4 [L]


Donc pour l'affichage d'une catégorie, je lui indique par exemple:
listing_2_3_.html (include listing, catégorie 2, page 3)
et pour un produit :
produit_2_3_6.html (include produit, catégorie 2, page 3, produit 6)

Je passe toujours mes paramètres dans le même ordre :

J'aurai donc voulu qu'il soit tous optionnels, c'est à dire pouvoir écrire par exemple :

listing_2.html ou listing_2_3. html sans tenir compte des paramètres inutiles pour cette page.

J'arriverai à le bidouiller en plusieurs lignes genre :

Code: Tout sélectionner
RewriteRule ^(.*)_(.*)_(.*)_(.*)\.(.*)$ structure.php?include=$1&categorie=$2&page=$3&produit=$4 [L]
RewriteRule ^(.*)_(.*)_(.*)\.(.*)$ structure.php?include=$1&categorie=$2&page=$3 [L]
RewriteRule ^(.*)_(.*)\.(.*)$ structure.php?include=$1&categorie=$2 [L]
etc...


Mais ca ne me parait pas très propre, et j'aimerai autant prodfiter de cette occasion pour apprendre qq chose.

J'espère m'être exprimé correctement ...

Merci d'avance.


1000apps
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 121
Inscription: Mar Mai 18, 2004 10:19

Message le Jeu Oct 13, 2005 9:41

Je ne sais pas si on peut bidouiller des conditions dans le .htaccess

Mais sinon tu peux peut être passer des paramètres 'vides" avec un caractère spécial par exemple ici 0:

listing_2_3_0.html (include listing, catégorie 2, page 3, pas de produit)
Listing_2_0_0.html (include listing, categorie 2, pas de page, pas de produit)
Listing_0_2_0.html (include listing, pas de categorie, page 2, pas de produit)

même principe pour les produits

rem: il parait qu'il vaut mieux mettre des" -" plutot que des" _" dans les urls, voir articles sur ce sujet sur Webrankinfo

A+

Pierre

r.mike
Nouveau WRInaute
 
Messages: 41
Inscription: Ven Oct 07, 2005 9:01

Message le Jeu Oct 13, 2005 9:49

oui je suis d'accord, mais ca reviens au même que ne rien mettre comme je le fais actuellement :listing_2_3_.html (listing_2_3_(3°paramètre).html)

Mais dans le cas présent, cette possibilité me rendrait service, même si elle est contournable.

Pour le séparateur, je ne sais pas trop car sur ce forum certains disent que le "-" n'est pas pris en compte par certains moteurs comme msn il me semble. Alors qui croire et que choisir ?

r.mike
Nouveau WRInaute
 
Messages: 41
Inscription: Ven Oct 07, 2005 9:01

Re: Paramètres optionnels?

Message le Jeu Oct 13, 2005 10:14

Bon en fait j'ai trouvé une solution :
Code: Tout sélectionner
RewriteRule ^([^_]*)[_]*([^_]*)[_]*([^_]*)[_]*([^_]*)\.(.*)$ structure.php?include=$1&categorie=$2&page=$3&produit=$4 [L]


Je ne pense qu'il dois y avoir plus simple, mais ca marche,

Je peux appeler : listing_2.htm ou listing_2_3.htm ou produit_2_3_6.htm et ca marche


correiaj
WRInaute accro
WRInaute accro
 
Messages: 1106
Inscription: Lun Avr 25, 2005 22:39

Message le Jeu Oct 13, 2005 12:29

voila un beau code: ;-)
RewriteRule /([a-z]+)_([0-9]+)_([0-9]+)_([0-9]+)\.html /structure.php?include=$1&categorie=$2&page=$3&produit=$4 [L,NC]
RewriteRule /([a-z]+)_([0-9]+)_([0-9]+)\.html /structure.php?include=$1&categorie=$2&page=$3 [L,NC]
RewriteRule /([a-z]+)_([0-9]+)\.html /structure.php?include=$1&categorie=$2 [L,NC]

r.mike
Nouveau WRInaute
 
Messages: 41
Inscription: Ven Oct 07, 2005 9:01

Message le Jeu Oct 13, 2005 13:59

Merci beaucoup, mais c'est le même principe que ce que j'évoquais en titre et ca me parait moins pratique que la solution que j'ai trouvé juste avant.

r.mike
Nouveau WRInaute
 
Messages: 41
Inscription: Ven Oct 07, 2005 9:01

Message le Jeu Oct 13, 2005 15:07

Bon suite aux conseils de 1000apps et aux explications contenues dans certains topic, j'ai pu voir que :

1) le "_" n'est pas une bonne solution car pas considéré comme un séparateur de mot

2) le "-" pose des problèmes de référencement avec certains moteurs s'il est utilisé plusieurs fois dans une seule chaine.

La solution est donc de virer les "_" et de mettre un seul "-" (ou éventuellement "_", je l'ai autorisé dans le code), j'ai donc gratté un peu pour faire ca (je le met au cas ou ca pourrait dépanner qqn d'autre.
Code: Tout sélectionner
RewriteRule ([^_-]+)([_-]+)([a-z]+)([0-9]+)([^&]*)(.*).(htm|html) $1$2$5$6&$3=$4.$7 [NC,N]
RewriteRule ^([^_-]+)([_-]+)(.*).(htm|html)$ structure.php?include=$1$3 [NC,L]


On peut balancer le nombre de variables qu'on veut dans l'ordre qu'on veut :

index.html
renverra
structure.php?include=index

listing-cat6page5a1b2c3.htm
renverra
structure.php?include=listing&cat=6&page=5&a=1&b=2&c=3

Seules contraintes:
- les noms de variables ne peuvent être que [a-z] (aucun chiffre ou caractère spécial)
- les variables ne peuvent être que numériques

PS : je me surprend moi même à avoir fait ce bout de code qui fonctionne, mais rassurez moi y'a aucune coquille ou autre liée à cette méthode ??? :?


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 :



Qui est en ligne

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