Rewriting basique

Nouveau WRInaute
Bonjour !

Allons droit au but ;)


j'aimerai réecrire :

publication-12.html
en
index.php?page=publication&id=12

et que la règle aille aussi avec, aucun paramètre sous la forme "-xx" donc :

publication.html
en
index.php?page=publication

j'ai ceci pour le début , mais je n'arrive pas à intégrer le -xx optionnel :

Code:
RewriteEngine On
RewriteRule ^(.+)\.html$ index.php?page=$1&id=$2 [L]

sachant que le premier paramètre sera toujours l'identifiant
merci ;)
 
WRInaute passionné
Ba voila ta reponce.
Mais bon tu pourras pas dire que ta cherché sur le forum.

Code:
RewriteEngine On 
RewriteRule ^(.+)\.html$ index.php?page=$1 [L]
RewriteRule ^(.+)-([0-9]+)\.html$ index.php?page=$1&id=$2 [L]

Quand tu dis:

alphayoda a dit:
J'aimerai réecrire :

publication-12.html
en
index.php?page=publication&id=12
Ce ne serai pas plutot l' inverse ?
Tu veux recrire
Code:
index.php?page=publication&id=12
en 
publication-12.html
 
Nouveau WRInaute
Ah tu utilises 2 règles.. je pensais tout mettre dans une mais effectivement c'est peut etre mieux ;)
Merci en tout cas mais ca ne semble pas fonctionner ... je vais voir ce qui pose problème.

j'ai cherché sur google ;)

il me semble plus logique que la réecriture se fasse dans le sens :
- on envoit : publication-12.html
- elle est réecrite en : index.php?page=publication&id=12
mais c'est vrai que c'est presque toujours noté dans l'autre sens.

edit : ça marche quand j'inverse l'ordre des règles :

Code:
RewriteEngine On
RewriteRule ^(.+)-([0-9]+)\.html$ index.php?page=$1&id=$2 [L]
RewriteRule ^(.+)\.html$ index.php?page=$1 [L]
 
WRInaute passionné
Salut

Je sais pas pourquoi cela marche pas dans mon sens.
J' ai le meme type d' URL et tous fonctonne parfaitement.
Tu peux essayer d'enlever le [L] sur la premiere ligne et la peut etre que cela marche.

Sinon pour le nombre de règles je ne me limites pas.
Par exemple sur mon site j'ai des URL rewrité.
Si l'utilisateur est enregistré j'ai du ajouter une regle car il y a des parametres dans l'URL.
Je sais que cela ne sert a rien ce que j'ai fais parce que Google n' indexera jamais ces pages.
Mais pour moi c'etais plus simple de faire ainci.

Si tu as d autres questions n'hesite pas.
 
WRInaute impliqué
ben c´est logique que ça ne marche pas dans l´autre sens:


RewriteRule ^(.+)\.html$ index.php?page=$1 [L]
cette regle est appliquée quelque soit le nom de la page
alors évidemment une fois
tapage-12.html transformée en
index.php?page=tapage-12

la règle:
RewriteRule ^(.+)-([0-9]+)\.html$ index.php?page=$1&id=$2 [L]
ne fonctionne plus
puisque elle s´applique que à:
tapage-12.html et non index.php?page=tapage-12
 
WRInaute passionné
Oki merci pour ces remarques je le serai pour la prochaine fois.
C'est vrai que cela parait logique.
 
Discussions similaires
Haut