Aller au contenu

Sujets conseillés

Posté

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 ?

Posté

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

Posté (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é par angel-dust-web
Posté

Quel est le nom du fichier que tu veux récrire ?

Donne-nous un exemple de

tgpp/([0-9])+/([0-9])+/index.html

Posté

RewriteRule tgpp.([0-9]+)/([0-9]+)/index.html /tgpp.php?id=$1&type=$2 [NC,L]

Est-ce que ceci fonctionne ?

Jean-Luc

Posté

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 ?

Posté

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

Posté

A priori, non

Options -Indexes
Options +FollowSymlinks
SetEnv SESSION_USE_TRANS_SID 0
RewriteEngine on
RewriteRule (.*)(\?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]

Posté (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é par Leonick
Posté

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.

Posté

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

Posté
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.

Posté
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 :wacko:

Solution : se passer des sessions, ça devrait être possible pour moi :D

Posté
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

Posté

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.

Posté
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

Posté

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 ;)

Posté
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
Posté
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

Posté

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 ?

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...