Aller au contenu

Probleme réécriture d'url contenant des '/' chez OVH


Sujets conseillés

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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]

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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