8791 sujets

Développement web côté serveur, CMS

Bonjour à tous.

Voilà 2 bonnes heures que je me prend la tête avec un problème a priori tout bête mais que je ne comprend pas.

Voilà, j'ai une règle en url rewriting qui est la suivante :
RewriteRule ^newsletter/lire/([a-zA-Z0-9\-\_\.\,]+)\.html	          newsletter.php?lettre=$1 [QSA,NC,L]


Le fichier newsletter.php est à la bonne place. j'ai mis dedans un print_r($_GET).
Si je tape l'url : h**p://monsite.com/newsletter/lire/truc-chouette.html
Ma page m'affiche
Array()
(donc rien dans la variable $_GET)

Si je tape l'url suivante : h**p://monsite.com/newsletter.php?lettre=truc-chouette
Je récupère bien
Array([ lettre ] => truc-chouette)


J'ai tenté d'ajouter le flag R à ma règle, mais il n'est pas pris en compte Smiley decu

Si je tape l'url : h**p://monsite.com/newsletter/lire/truc-chouette.html?preview=1
Je récupère
Array( [ preview ] => 1 )
mais donc pas l'index "lettre" => truc-chouette dont j'ai besoin.

Les autres règles de rewrite, fonctionnent sans problème. Il n'y a que celle-là qui foire.
je l'ai mise en premier.
Les suivantes :

RewriteRule ^newsletter/([a-zA-Z]+)/([a-zA-Z0-9]+)/?$        index.php?module=newsletter&action=$1&verif=$2 [QSA,NC,L]
RewriteRule ^newsletter/([a-zA-Z]+)/([a-zA-Z0-9\@\-\_\.]+)/?$	      index.php?module=newsletter&action=$1&email=$2 [QSA,NC,L]
RewriteRule ^newsletter/([a-zA-Z]+)/?$      index.php?module=newsletter&action=$1 [NC,L]

Fonctionnent donc.

Si quelqu'un à une idée ou une solution, je lui en serait reconnaissant, parce que je sèche complètement là
Smiley biggol Smiley biggol Smiley biggol Smiley biggol Smiley biggol Smiley biggol
Modifié par AnakinDSL (06 Jan 2010 - 23:24)
Salut,

pas de problème chez moi en reprenant ton code.

Quand tu dis "Ma page m'affiche Array()" tu parles bien de newsletter.php ?

Sinon, question bête, tu as bien mis cette règle en première position dans le htaccess ?


Edit: il s'agit peut-être d'un RewriteBase / manquant ?
Modifié par Heyoan (20 Dec 2009 - 18:46)
Heyoan a écrit :
Salut,

pas de problème chez moi en reprenant ton code.

Quand tu dis "Ma page m'affiche Array()" tu parles bien de newsletter.php ?

Oui Smiley smile
Heyoan a écrit :
Sinon, question bête, tu as bien mis cette règle en première position dans le htaccess ?

Oui oui Smiley smile

Heyoan a écrit :
Edit: il s'agit peut-être d'un RewriteBase / manquant ?

Non non, ça manque pas Smiley smile , il y est Smiley cligne

Nan mais là, c'est encore pire, je mets la ligne en commentaire et ...... ça continue de marcher pareil ... je vais aller me coucher moi ... Je vais devenir chèvre Smiley biggol

En tout cas, merci pour tes tests !
Modifié par AnakinDSL (20 Dec 2009 - 18:50)
AnakinDSL a écrit :
je mets la ligne en commentaire et ...... ça continue de marcher pareil
Effectivement ça fonctionne comme si la ligne n'existait pas : peut-être un caractère invisible (genre BOM) qui traîne avant ta ligne.

Ça mériterait de le vérifier...
Heyoan a écrit :
Effectivement ça fonctionne comme si la ligne n'existait pas : peut-être un caractère invisible (genre BOM) qui traîne avant ta ligne.

Ça mériterait de le vérifier...

A priori, je suis en tout UTF8 sans Bom là ... sur l'ensemble des fichiers.

Je me suis amusé à virer le ficheir htaccess, le site ne marche plus (normal !) mais par contre, la redirection vers newsletter.php fonctionne (en buggant, mais y'a une redirection vers là quoi)
Bonjour,

Si ça redirige toujours malgrés le fait d'avoir enlevé le .htaccess c'est peut-etre dû à un header('Location: ...') ou à une balise méta refresh qui se balade quelque part.

Après j'ai pas plus d'idées que ça Smiley cligne

Bon courage,

Smiff.
Merci pour l'aide.
Alors en fait j'ai fini par trouver !
Je poste ici au cas où ça servirait à d'autres ou au moins pour donner des pistes de recherche.

J'avais donc la règle suivante qui buggait :
 RewriteRule ^newsletter/lire/([a-zA-Z0-9\-\_\.\,]+)\.html	          newsletter.php?lettre=$1 [QSA,NC,L]


je l'ai simplement changée en :
 RewriteRule ^lettre/lire/([a-zA-Z0-9\-\_\.\,]+)\.html	          newsletter.php?lettre=$1 [QSA,NC,L]

Et ça roule !

Il semblait donc y avoir un conflit avec le nom de fichier et le répertoire dans la règle.
Un vrai casse-tête.