Ré-écriture ne fonctionne pas ,j'ai oublié une étape

  • Auteur de la discussion Auteur de la discussion Blaster
  • Date de début Date de début
WRInaute discret
Bonjour

voila le script de base est sous cette forme
http://www.phpbb-graph.com/templates.ph ... plate&id=1

Je veut appeler cette page via
http://www.phpbb-graph.com/templates-de ... ate-1.html

Et là problème , si je fais
Code:
RewriteEngine on 
RewriteRule ^templates-(.*)-(.*)\.html$ templates.php?action=details_template&id=1 [L]

vca fonctionne mais si je fais
Code:
RewriteEngine on 
RewriteRule ^templates-(.*)-(.*)\.html$ templates.php?action=details_template&id=$1 [L]

Ca plante
Erreur SQLUnknown column 'details_template' in 'where clause'
il récupére donc pas l'ID , mais j'avou jcapte plus rien là :(

Merci d'avance
 
WRInaute occasionnel
En fait tu devrais plutot écrire à mon avis

RewriteEngine on
RewriteRule ^templates-(.*)-(.*)\.html$ templates.php?action=$1&id=$2 [L]

Lorsque tu as des parenthèses à gauche, la première va à $1, la deuxième $2,....
 
WRInaute discret
Encore un problème :(

pour passer de templates.php a templates.html aucun soucis j'ai fais ca
Code:
RewriteRule ^templates\.html$ templates.php [L]

Mais pour passer de page en page normalement j'ai
templates.php?viewpage=6

J'ai donc fais
Code:
RewriteRule ^templates-(.*)-\.html$ templates.php?viewpage=$1 [L]

Mais si je fais
templates-viewpage-6.html
ca change rien , on reste sur la première page :?
 
WRInaute impliqué
Normal , inverse l'ordre des commandes : mets
Code:
RewriteRule ^templates-(.*)-\.html$ templates.php?viewpage=$1 [L]
avant
Code:
RewriteRule ^templates\.html$ templates.php [L]
:wink:
 
WRInaute discret
Merci , mais malheureusement ca ne fonctionne pas :(

Pour l'instant dans mon .htaccess j'ai ca :
Code:
RewriteEngine on 
RewriteRule ^templates-(.*)-(.*)\.html$ templates.php?action=$1&id=$2 [L] 
RewriteRule ^templates-(.*)-\.html$ templates.php?viewpage=$1 [L]
RewriteRule ^templates\.html$ templates.php [L]

L'ordre est bon là non ?
En tout cas ca marche pour templates.html et templates-details_template-ID.html
 
WRInaute occasionnel
Blaster a dit:
Merci , mais malheureusement ca ne fonctionne pas :(

Pour l'instant dans mon .htaccess j'ai ca :
Code:
RewriteEngine on 
RewriteRule ^templates-(.*)-(.*)\.html$ templates.php?action=$1&id=$2 [L] 
RewriteRule ^templates-(.*)-\.html$ templates.php?viewpage=$1 [L]
RewriteRule ^templates\.html$ templates.php [L]

L'ordre est bon là non ?
En tout cas ca marche pour templates.html et templates-details_template-ID.html

Tu as une erreur si tu veux faire ça :

templates-viewpage-6.html

Le code doit être
RewriteRule ^templates-(.*)-(.*)\.html$ templates.php?$1=$2 [L]

ou encore

RewriteRule ^templates-viewpage-(.*)\.html$ templates.php?viewpage=$1 [L]

Le code entier car l'ordre est important !

RewriteRule ^templates-viewpage-(.*)\.html$ templates.php?viewpage=$1 [L]
RewriteRule ^templates-(.*)-(.*)\.html$ templates.php?action=$1&id=$2 [L]
RewriteRule ^templates\.html$ templates.php [L]

Attention car si tu mets la 1er regle aprés la 2eme alors tu vas partir sur templates.php?action=$1&id=$2 pour ton viewpage....

a+
 
WRInaute discret
Merci beaucoup macjee c'etait bien ca :D

maintenant autre soucis avec une fonction mais rien a voir avec le sujet.
Je verrais ca demain avec mon formateur ( développeur ) :)

Je met pas réglé , je risque de revenir plus tard ... encore merci de ton aide :D

Bonne nuit
 
WRInaute discret
Pensez à utiliser mon vérificateur htaccces ;-)
http://htaccesscheck.notredomaine.net/

Mais bon perso je mettrais:
Code:
RewriteRule ^templates-viewpage-([0-9]+)\.html$ templates.php?viewpage=$1 [L]
RewriteRule ^templates-(.+)-(.+)\.html$ templates.php?action=$1&id=$2 [L]
RewriteRule ^templates\.html$ templates.php [L]
En tout cas elle est belle la faille de sécurité si t'avais ça:
Code:
Erreur SQLUnknown column 'details_template' in 'where clause'
:roll: et normalement elle doit toujours y être...
 
WRInaute impliqué
Probablement que tu utilises une requête SQL en fonction de l'action récupérée depuis l'URL .
A la truffe , c'est l'id que tu récupères pour aller chercher le thème .
La faille ici est de type injection SQL .
Pour la prévenir , fais un intval() sur ton $HTTP_GET_VARS['id'] , ça t'évitera de mauvaises surprises .
 
WRInaute discret
Ok merci je vais y remédier , je savais pas que ca ouvrais une faille :?
donc thanks :D

Sinon pour en revenir au .htaccess
encore un soucis :(

Code:
RewriteEngine on 
RewriteRule ^templates-viewpage_(.*)\.html$ templates.php?viewpage=$1 [L] 
RewriteRule ^templates_lettre_(.*)\.html$ templates.php?lettre=$1 [L] 
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?action=$1&id=$2 [L] 
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?lettre=$1&viewpage=$2 [L] 
RewriteRule ^templates\.html$ templates.php [L]

c'est la ligne là qui pose problème
Code:
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?lettre=$1&viewpage=$2 [L]

Donc je récupére par lettre PUIS pour aller a la page suivante ca donnerais donc
templates_lettre_X.html ( pour aller a la lettre X
et templates_lettre_X_viewpage_6.html ( Pour aller a la deuxieme page de la lettre X )
le second pose problème , ca me dis qu'il y a aucun template .
Si quelqu'un voit pourquoi et ou est mon erreur ...

Car j'ai chercher , plusieurs essai sans résultat [/code]
 
WRInaute discret
Si tu avais utilisé le htaccess checker, tu saurais que
Code:
templates_lettre_X_viewpage_6.html
est réécrit en
Code:
templates.php?lettre=X_viewpage_6
:roll:

Rappèle toi que (.*) désigne une chaine d'une longueur quelconque (même nulle) contenant nimporte quel carractère (dont les "_"). Donc si tu veux que ton truc marche, tu dois corriger tes règles en:
Code:
RewriteEngine on 
RewriteRule ^templates-viewpage_(.*)\.html$ templates.php?viewpage=$1 [L] 
RewriteRule ^templates_lettre_([a-z]+)\.html$ templates.php?lettre=$1 [L] 
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?action=$1&id=$2 [L] 
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?lettre=$1&viewpage=$2 [L] 
RewriteRule ^templates\.html$ templates.php [L]
 
WRInaute discret
Ca ne fonctionne pas non plus
idem "Il n'existe pas de template pour cette lettre" si je remplace bien par tte tes lignes , je n'ai plus pour avoir lettre par lettre. :(
 
WRInaute occasionnel
Salut c'est normal

Code:
RewriteEngine on 
RewriteRule ^templates-viewpage_(.*)\.html$ templates.php?viewpage=$1 [L] 
RewriteRule ^templates_lettre_(.*)\.html$ templates.php?lettre=$1 [L] 
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?action=$1&id=$2 [L] 
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?lettre=$1&viewpage=$2 [L] 
RewriteRule ^templates\.html$ templates.php [L]

Regarde ces deux lignes que tu as

Code:
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?action=$1&id=$2 [L] 
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?lettre=$1&viewpage=$2 [L]

tu as la même regles ^templates_(.*)_(.*)\.html$ sur ces deux lignes !! Impossible de faire la différence, donc ta deuxième ligne ne sert strcitement à rien.

Tu dois la remplacer par

Code:
RewriteRule ^templates_lettre_(.*)_viewpage_([0-9]*)\.html$ templates.php?lettre=$1&viewpage=$2 [L]

Je pense que ça devrait marcher (j'ai pas testé) donc le code final.

Code:
RewriteEngine on 
RewriteRule ^templates-viewpage_(.*)\.html$ templates.php?viewpage=$1 [L] 
RewriteRule ^templates_lettre_(.*)_viewpage_([0-9]*)\.html$ templates.php?lettre=$1&viewpage=$2 [L] 
RewriteRule ^templates_lettre_(.*)\.html$ templates.php?lettre=$1 [L] 
RewriteRule ^templates_(.*)_(.*)\.html$ templates.php?action=$1&id=$2 [L] 
RewriteRule ^templates\.html$ templates.php [L]
 
WRInaute discret
ah ok , je savais pas que ca marchais comme ca ( niveau différence )
décidémment je ferais quoi sans vous :D

merci beaucoup de ton/votre aide à tous :D
 
Discussions similaires
Haut