Qu'est ce qui ne va pas dans cette URL rewritting ?

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

renaud63
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 38
Inscription: 30 Sep 2006

Qu'est ce qui ne va pas dans cette URL rewritting ?

Message le Mar Mar 18, 2008 10:14

Bonjour à tous,

Une erreur 404 sur cette URL rewritting, je n'en trouve pas la cause :

Code: Tout sélectionner
URL de base : achat/produit_details.php?id=2&catid=20&nom=Je-joue-au-Cluedo
URL réécrite : achat/produit-details-2-20.Je-joue-au-Cluedo.html

htaccess
RewriteRule ^produit-details-([0-9]+)-([0-9]+)\.(-[a-zA-Z]+)\.html$ 
/achat/produit_details.php?id=$1&catid=$2&nom=$3 [L]



Merci du coup de main, et bonne journée.

Vap
WRInaute passionné
WRInaute passionné
 
Messages: 1090
Inscription: 17 Juin 2007

Message le Mar Mar 18, 2008 10:19

Il manque le répertoire dans la partie gauche il me semble:

Code: Tout sélectionner
RewriteRule ^achat/produit-details-([0-9]+)-([0-9]+)\.(-[a-zA-Z]+)\.html$
/achat/produit_details.php?id=$1&catid=$2&nom=$3 [L]

PatrickM.
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 19
Inscription: 25 Oct 2007

Message le Mar Mar 18, 2008 11:49

Bonjour à tous,

Je pense que le souci vient de la règle pour la 3è partie: (-[a-zA-Z]+)

Il faudrait le remplacer par ([-a-zA-Z]+) ainsi, cela permettrait de gérer plusieurs occurences du "-", ce qui est le cas pour Je-joue-au-Cluedo

Amicalement,

renaud63
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 38
Inscription: 30 Sep 2006

Message le Mar Mar 18, 2008 15:43

Merci à vous, c'est impec !
C'est en effet l'expression régulière qui ne fonctionnait pas...

J'aurais besoin d'un conseil :

Je génére un fichier sitemap.xml à la volée avec PHP et il est bien reconnu par Google, bien que les liens soient du type index.php?id=2&page=1

Maintenant que j'ai reécrit les liens avec URL rewritting et les htaccess....et ce qu'il faut que je mette les nouveaux liens aussi dans le sitemap.xml ? Est ce important ?

Merci de vos lumières !
:idea:


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mar Mar 18, 2008 16:47

il faut renommer tous les liens (y compris dans le sitemap) mais également faire une redirection 301 des anciennes url vers les nouvelles. Pour cela le plus simple est de faire un test au début du script php :
Code: Tout sélectionner
$la_bonne_url = '/achat/produit-details-2-20.Je-joue-au-Cluedo.html';
if ($_SERVER['REQUEST_URI'] != $la_bonne_url) {
   header('Status: 301 Moved Permanently', false, 301);
   header('Location: ' . $la_bonne_url);
   exit;
}

Il faut bien sur déterminer "la bonne url" à partir des paramètres.

renaud63
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 38
Inscription: 30 Sep 2006

Message le Mar Mar 18, 2008 16:51

Humm...ça se corse...
Cette redir 301 est utile pour que Google soit à jour avec les nouveaux liens ? Pour ne pas perdre son référencement ?

Parce que en fait, la plupart de mes liens sont générés dynamiquement par une boucle qui lit une table...alors pas facile, le header en début de script...

8O


Je vais chercher des tutos sur le sujet pour essayer de comprendre.

En tout cas, merci !


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mar Mar 18, 2008 17:08

renaud63 a écrit:Humm...ça se corse...
Cette redir 301 est utile pour que Google soit à jour avec les nouveaux liens ? Pour ne pas perdre son référencement ?

il ne faut pas deux pages avec le même contenu. il faut donc indiquer a google que la page a été renommée

renaud63 a écrit:Parce que en fait, la plupart de mes liens sont générés dynamiquement par une boucle qui lit une table...alors pas facile, le header en début de script...

si tu es capable de déterminer le lien dans la boucle, tu peux copier ce code juste avant le code que je t'ai donné pour déterminer la bonne url non?

renaud63
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 38
Inscription: 30 Sep 2006

Message le Mar Mar 18, 2008 17:23

Oui oui, en théorie c'est jouable...

Je pensais simplement que la fonction header allait poser problème à certains endroits puisque j'envoie du HTML avant l'affichage du contenu lu par la boucle... et il faut que je mette la redir 301 dans la boucle.
Il faut que je teste, parce que, à mon avis je risque de prendre un gros warning en pleine tête !

:?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mar Mar 18, 2008 17:52

le code est a mettre avant tout envoi de donnée au navigateur (au début de produit_details.php). Sinon il faut utiliser ob_start()

il faut faire :
Code: Tout sélectionner
$la_bonne_url = '/achat/produit-details-' . $_GET['id'] . '-' . $_GET['catid'] . '.' . $_GET['nom'] . '.html';
if ($_SERVER['REQUEST_URI'] != $la_bonne_url) {
   header('Status: 301 Moved Permanently', false, 301);
   header('Location: ' . $la_bonne_url);
   exit;
}


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google goo.gl

  • Liste des backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Transformer des textes non cliquables en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités