passage de variables

Nouveau WRInaute
hello :)

J'ai un soucis quant au passage de parametre d'une page. Pour être précis c'est un livre d'or qui me renvoie immédiatement sur la page 1 que que soit mon essai.
Voici mon .htaccess (attention je débute, j'ai encore un peu de mal)

Code:
RewriteEngine on
RewriteRule   ^pension(/*)$ /pension.php  [L]
RewriteRule   ^reserver(/*)$ /resa.php  [L]
RewriteRule   ^chiots(/*)$ /chiots.php  
RewriteRule   ^portees/chiots-([0-9]+)(/*) /chiots.php?id=$1 [L]
RewriteRule   ^toilettage(/*)$ /toilettage.php  [L]
RewriteRule   ^alimentation(/*)$ /alimentation.php  [L]
RewriteRule   ^produits(/*)$ /produits.php  [L]
RewriteRule   ^races(/*)$ /races.php  [L]
RewriteRule   ^livre/page/([0-9]+)(/*)$ /livre.php?p=$1 [L]
RewriteRule   ^plan(/*)$ /plan.php  
RewriteRule   ^imprimer/plan(/*)$ /carte.php [L]
RewriteRule   ^contact(/*)$ /contact.php  [L]
RewriteRule   ^copyright(/*)$ /nawak.php?rub=1 [L]
RewriteRule   ^apropos(/*)$ /nawak.php?rub=2 [L]
RewriteRule   ^printpension\.html$ /print.php?cat=1 [L]
RewriteRule   ^printalimentation\.html$ /print.php?cat=2 [L]
RewriteRule   ^printtoilettage\.html$ /print.php?cat=3 [L]
RewriteRule   ^alerte-mail/chiots(/*)$ /alertechiots.php [L]
RewriteRule   ^alerte-mail/desinscription(/*)$ /desinscription.php [L]
ErrorDocument 404 /404.php

Le soucis vient de ^livre/page/([0-9]+)(/*)$ /livre.php?p=$1 [L]

Si je mets www.site.com/livre/ ca marche (et pourquoi d'ailleur ?!) et si je mets par exemple www.site.com/livre/page/2/ rien a faire, la variable $p ne passe pas à ma page.

Je m'y prend peut etre de travers avec ma gestion facon "dossier", je ne sais plus trop de quel coté chercher. J'ai un 300gp chez ovh, et pour ceux qui souhaiteraient tester un live, l'url du site est www.clair-ruisseau.com

Merci d'avance à ceux qui me liront
 
Nouveau WRInaute
resalut

A force d'essais, je recondense le probleme à une question plus simple, et somme toute plus basique:

j'ai une page livre.php. Je souhaite, à partir de cette page, faire plusieurs règles de réécriture. Je souhaiterais ourvoir obtenir au final deux url différents:

./livre/
./livre/page/2/

Actuellement j'ai ceci:

Code:
RewriteRule ^livre$ /livre/ [R]
RewriteRule ^livre/$ /livre.php 
RewriteRule ^livre/page/([0-9]+)$ /livre/page/$1/ [R]
RewriteRule ^livre/page/([0-9]+)/$ /livre.php?p=$1 [L]

J'ai essayé egalement un simple:

Code:
RewriteRule ^livre/$ /livre.php 
RewriteRule ^livre/([a-z]+)/([0-9]+)/$ /livre.php?p=$2 [L]

qui ne fonctionne absolument pas.
Je peux tapper ceci: www.site.com/livre/lksjqhfhq et ca me recondiura sur ma page livre. De ce fait, je peux comprendre que ma variable ne soit pas prise en compte.
De quelle facon puis-je etablir une règle stricte ne prenant en compte que ces deux cas ?

Merci d'avance
 
Nouveau WRInaute
Merci de ta réponse e-kiwi.

J'ai fait comme tu as dis, et effectivement ca semble plus logique.
En revanche ca n'a rien changé au probleme. Le plus troublant c'est de pouvoir taper site.com/livre/kjhjsdhkf et que ca ne fasse aucune erreur de page introuvable ou un truc comme ca, ca me redirige sur la page livre.php.

Pour rappel, voici les quelques lignes qui posent probleme: (comme toutes celles qui sont de la meme forme)
Code:
RewriteRule ^livre/page/([0-9]+)/$ /livre.php?p=$1 [L]
RewriteRule ^livre/$ /livre.php [L]

Merci encore
 
WRInaute accro
>> ca me redirige sur la page livre.php

forcment, tu as ca : RewriteRule ^livre/$ /livre.php [L] , donc ca semble logique que ca te renvoi sur livre.php, sans aucune variable, vu que ce cas n est pas couvert par ta premiere ligne (kjhjsdhkf ne correspond pas à ([0-9]+) )
 
Nouveau WRInaute
ok

je viens de faire la chose suivante:

j'ai viré la ligne ^livre/$ /livre.php [L]

et je n'ai laissé que celle qui comporte la variable, à savoir:

RewriteRule ^livre/page/([0-9]+)/$ /livre.php?p=$1 [L]

mais le résultat est le même. Ma variable ne passe pas et si je tape simplement site.com/livre sans meme de / à la fin, ca me renvoie toujours sur ma page. Le site.com/livre/khkdk fonctionne de la meme facon.

Je n'ai aucune autre règle qui commence par livre

Y'a t'il une mise en cache du htaccess par apache et je fais des modifs qui n'apparaissent pas de suite ou bien je n'ai rien pigé au rewriting du tout ?
 
Nouveau WRInaute
j'en remet une couche:

je developpe en local avec easyphp1.8(apache 1.3.33) ou:
-mes regles de réécriture fonctionnent
-la moindre modification se voit instantanément

j'essaye sur un autre pc, avec wamp server 5 (apache 1.3.33 aussi) et il se passe la même chose que chez OVH:
meme si je supprime totalement le .htaccess du repertoire, la réécriture se fait sans probleme. Redemarrer les services ne changent rien, autant que redemarrer le pc !

J'essaye vite fait sur une machine amen avec deux pages la regle de réécriture, et elle marche sans probleme ?!
 
WRInaute accro
>> meme si je supprime totalement le .htaccess du
>> repertoire, la réécriture se fait sans probleme

tu aurai pas un htaccess dans un repertoire parent ?
 
Nouveau WRInaute
j'ai bien un htaccess dans un sous dossier, mais sans inherit. Voici son contenu

Code:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /photos
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [S=2]
RewriteRule feed/$ plog-rss.php?path=%{REQUEST_URI} [L]
RewriteRule ^.*$ index.php?path=%{REQUEST_URI} [L]
</IfModule>

Sinon j'ai deux "deny from all" dans deux sous-sous repertoires.
J'ai fait un essai chez amen avec seulement deux pages. Je vais réiterer l'essai avec ces deux pages sur un autre hebergement de chez ovh, pour voir si effectivement le probleme proviendrait d'un autre htacces. Je vous tiens au courant.
Merci encore
 
Nouveau WRInaute
bon et bien c'était rapide. Sur un autre hébergement ovh sans aucun htaccess, dans un repertoire parent, le probleme est le meme avec seulement deux fichiers, la variable n'est pas transmise.. Mon htaccess de test est le suivant:

Code:
RewriteEngine on

RewriteBase /test
RewriteRule ^chiots/portees/([0-9]+)$ /chiots/portees/$1/ [R]
RewriteRule ^chiots/portees/([0-9]+)/$ /chiots.php?id=$1
RewriteRule ^chiots$ chiots/ [R] 
RewriteRule ^chiots/$ chiots.php [L]

je ne comprend plus trop.

edit: et il y a bien le meme probleme de "conservation" des regles. Le changement n'est pas instantané apres la modification. Mais impossible de savoir le temps que ca mets...
 
Discussions similaires
C
Réponses
4
Affichages
1K
christele2
C
Haut