angel-dust-web Posté 21 Août 2009 Posté 21 Août 2009 Bonjour, je rencontre un problème avec là régle suivante chez OVH mutualisé : RewriteRule tgpp/([0-9])+/([0-9])+/index.html /tgpp.php?id=$1&type=$2 [NC,L] elle fonctionne très bien en local (Mac OS + MAMP et WinXP + EasyPhp) mais sur ovh, les paramètres ne sont pas remplacés (cad que c'est bien la page tgpp.php qui est affichée mais sans id et sans type). J'ai essayé pas mal de trucs. Si je remplace les '/' par autre chose (genre '_') ça fonctionne très bien. En fait, c'est juste le premier '/' qui pose problème car la régle suivante fonctionne : RewriteRule tgpp([0-9])+/([0-9])+/index.html /tgpp.php?id=$1&type=$2 [NC,L] Quand je contacte le support technique d'ovh, ils me renvoient sur leur aide sur les réécritures d'url, ce qui ne sert à rien vu la vacuité de celle-ci. Ma question : c'est moi qui fait une erreur grosse comme une maison que je ne vois pas ? Quelqu'un a déjà rencontré le probléme ?
Jeanluc Posté 21 Août 2009 Posté 21 Août 2009 Bonjour et bienvenue sur Webmaster-Hub, Ce ne serait pas plutôit ceci : RewriteRule tgpp\/([0-9]+)\/([0-9]+)\/index.html /tgpp.php?id=$1&type=$2 [NC,L] J'ai remplacé tes / par des \/ et tes ([0-9])+ par des ([0-9]+). Jean-Luc
angel-dust-web Posté 21 Août 2009 Auteur Posté 21 Août 2009 (modifié) Merci Jean-Luc, j'ai essayé, ça ne change rien. Les '/' n'ont, à priori, pas besoin d'être escapés. Quant aux ([0-9]+) - (mal écrits dans mon premier post comme tu l'as remarqué ), j'ai essayé plusieurs choses, y compris (\d*), (.*) et ça ne change rien. Il est intéressant de constater que si j'écris RewriteRule tgpp(.*)/etc..... tout fonctionne. Ce sont les '/' avant le premier groupe de regexp qui causent le problème. Ce qui me surprend, c'est d'être le premier chez ovh qui fasse une telle redirection... elle ne me paraît pas si originale que ça... Modifié 21 Août 2009 par angel-dust-web
Dan Posté 21 Août 2009 Posté 21 Août 2009 Quel est le nom du fichier que tu veux récrire ? Donne-nous un exemple de tgpp/([0-9])+/([0-9])+/index.html
angel-dust-web Posté 21 Août 2009 Auteur Posté 21 Août 2009 Dan, je veux réécrire monsiteweb.com/tgpp/0715/1/index.html en monsiteweb.com/tgpp.php?id=0715&type=1
Jeanluc Posté 22 Août 2009 Posté 22 Août 2009 RewriteRule tgpp.([0-9]+)/([0-9]+)/index.html /tgpp.php?id=$1&type=$2 [NC,L] Est-ce que ceci fonctionne ? Jean-Luc
angel-dust-web Posté 22 Août 2009 Auteur Posté 22 Août 2009 toujours pas avec le '/'. Si je met une adresse tgpp_1234/1/index.html ça fonctionne, mais pas tgpp/1234/1/index.html..... (je précise que je n'ai aucun répertoire tgpp qui mettrait le grouille) je suis pas fou ? y'a un bug ?
Jeanluc Posté 22 Août 2009 Posté 22 Août 2009 Qu'y a-t-il d'autre dans ton .htaccess ? Peut-être que tu as une autre règle qui intercepte les adresses /tgpp/1234/1/index.html ? Jean-Luc
angel-dust-web Posté 22 Août 2009 Auteur Posté 22 Août 2009 A priori, non Options -IndexesOptions +FollowSymlinksSetEnv SESSION_USE_TRANS_SID 0 RewriteEngine onRewriteRule (.*)(\?PHPSESSID=.*) $1 [R=301,L]RewriteRule ([a-z]+[A-Z]+)-([a-z]+[A-Z]+)-([a-z]+[A-Z]+)\.htm /hide.php?mot1=$1&mot2=$2&mot3=$3 [NC,L]RewriteRule tgpp([0-9]+)/([0-9]+)/index\.html /tgpp.php?gal=$1&type=$2 [NC,L]
Leonick Posté 24 Août 2009 Posté 24 Août 2009 (modifié) c'est normal, tgpp([0-9]+)/([0-9]+)/index\.html /tgpp.php?gal=$1&type=$2 [NC,L] va chercher des caractères numérique accolés à tgpp, vu que tu as mis un + il faudrait donc tgpp/([0-9]+)/tgpp/([0-9]+)/index\.html /tgpp.php?gal=$1&type=$2 [NC,L] dans ta 1° règle, le problème venait de tes + sortis des parensthèses Modifié 24 Août 2009 par Leonick
Dan Posté 24 Août 2009 Posté 24 Août 2009 Pour info, ta règle : RewriteRule (.*)(\?PHPSESSID=.*) $1 [R=301,L] ne passera JAMAIS ! Lorsqu'on veut traitre le %{QUERY_STRING} il faut utiliser une règle conditionnelle, et non une règle classique.
angel-dust-web Posté 24 Août 2009 Auteur Posté 24 Août 2009 merci, mais en fait j'avais bien mes + sortis des parenthèses. En fait, c'est exactement là règle que tu donnes qui ne fonctionne pas. Pour résumer : tgpp([0-9]+)/([0-9]+)/index\.html /tgpp.php?gal=$1&type=$2 [NC,L] fonctionne avec une adresse tgpp1234/1/index.html mais tgpp/([0-9]+)/([0-9]+)/index\.html /tgpp.php?gal=$1&type=$2 [NC,L] ne fonctionne pas avec une adresse tgpp/1234/1/index.html sinon, je suis bien d'accord qu'elle devrait fonctionner. quelqu'un de très aimable ayant un hébergement mutualisé chez ovh pourrait essayer et me faire part de ses conclusions ? ca serait vraiment sympa (vu qu'ovh ne fait rien à part m'envoyer des liens sur leur pauvre page d'aide, qui ne dit rien...) regards
angel-dust-web Posté 24 Août 2009 Auteur Posté 24 Août 2009 Pour info, ta règle : RewriteRule (.*)(\?PHPSESSID=.*) $1 [R=301,L] ne passera JAMAIS ! Lorsqu'on veut traitre le %{QUERY_STRING} il faut utiliser une règle conditionnelle, et non une règle classique. Merci Dan, sans doute pour ça que google me liste toujours des milliers de pages avec des ?PHPSESSID... Je vais fixer ça.
Leonick Posté 24 Août 2009 Posté 24 Août 2009 de toutes façons, il faut paramétrer php pour que les PHPSESSID passent par cookie
angel-dust-web Posté 24 Août 2009 Auteur Posté 24 Août 2009 de toutes façons, il faut paramétrer php pour que les PHPSESSID passent par cookie En mutualisé, difficile de paramétrer php... Et là, ils sont en session donc en cookie. Problème : googlebot ne prend pas les cookies, donc il met ça en url Solution : se passer des sessions, ça devrait être possible pour moi
Leonick Posté 24 Août 2009 Posté 24 Août 2009 En mutualisé, difficile de paramétrer php...si, sans problème avec ini_set("session.use_cookies", 1); ini_set("session.use_trans_sid", 0); ini_set('session.use_only_cookies', 1); placé en début de code
Remi Posté 25 Août 2009 Posté 25 Août 2009 Cela devrait marcher effectivement... Remonte dans l'arbre de ton hébergement pour voir s'il n'y a pas d'autres htaccess qui interfèrent (même en multidomaine, tous les htaccess au dessus sont pris en compte). Sinon essaie avec abcd/ au lieu de tgpp/ au début du premier paramètre.
angel-dust-web Posté 25 Août 2009 Auteur Posté 25 Août 2009 si, sans problème avec ini_set("session.use_cookies", 1); ini_set("session.use_trans_sid", 0); ini_set('session.use_only_cookies', 1); placé en début de code Merci Leonick, je vais essayer ça. Question subsidiaire, comment faire pour que disparaissent tous les ?PHPSESSID des pages indexées par googlebot ? (Et comment se fait-il qu'un bot si évolué ne sache même pas reconnaitre qu'il est sur la même page ? ) Cela devrait marcher effectivement... Remonte dans l'arbre de ton hébergement pour voir s'il n'y a pas d'autres htaccess qui interfèrent (même en multidomaine, tous les htaccess au dessus sont pris en compte). Sinon essaie avec abcd/ au lieu de tgpp/ au début du premier paramètre. Remi, c'est mon htaccess racine... :-( Je vais essayer de changer ma redirection comme tu dis, je te dirai
angel-dust-web Posté 27 Août 2009 Auteur Posté 27 Août 2009 je ne comprends plus rien.... effectivement si je remplace 'tgpp' par 'abcd', ca fonctionne très bien. la seule raison que je voie, c'est que j'ai une page qui s'appelle tgpp.php (même si je comprend pas pourquoi le fait d'avoir une page du même nom que ce qu'il devrait considérer comme un répertoire fait qu'il renvoie la page AVANT la ré-écriture). Si je remplace mon 'tgpp' par n'importe quel nom de page, genre 'index', il m'affiche la page du même nom ('index.php'). => J'ai donc ma solution. renommer ma page tgpp.php en autrechose.php et tout ira bien.... merci à tous pour votre aide
Leonick Posté 27 Août 2009 Posté 27 Août 2009 je ne comprends plus rien....effectivement si je remplace 'tgpp' par 'abcd', ca fonctionne très bien. la seule raison que je voie, c'est que j'ai une page qui s'appelle tgpp.php (même si je comprend pas pourquoi le fait d'avoir une page du même nom que ce qu'il devrait considérer comme un répertoire fait qu'il renvoie la page AVANT la ré-écriture dans la négociation de contenu, apache vérifie si un fichier n'existe pas du même nom avant d'appliquer les règles de réécriture. Et ça vaut autant pour une uri simple ou une uri avec le nom du fichier comme répertoire virtuel
Remi Posté 31 Août 2009 Posté 31 Août 2009 même si je comprend pas pourquoi le fait d'avoir une page du même nom que ce qu'il devrait considérer comme un répertoire fait qu'il renvoie la page AVANT la ré-écriture Pour éviter ce genre de conflit, tu peux ajouter dans le htaccess : Options -MultiViews
Leonick Posté 31 Août 2009 Posté 31 Août 2009 le problème c'est que dans ce cas là, tu seras obligé de spécifier l'extension du fichier, plus de /page mais /page.php par exemple, non ?
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant