URL Rewriting à plusieurs variables / problèmes de tirets

Discussion dans 'Débuter en référencement' créé par dj aroy, 16 Décembre 2009.

  1. dj aroy
    dj aroy Nouveau WRInaute
    Inscrit:
    28 Juillet 2009
    Messages:
    11
    J'aime reçus:
    0
    Bonjour à tous,

    Il s'agit de mon premier post, alors j'espere que je trouverais un peu d'aide quant à un probleme auquel je fais face.
    Pour info je m'appelle Augustin et je viens de lancer un site sur l'actualité de la musique électronique. Celui-ci consiste à la diffusion d'articles au quotidien.

    J'ai décidé pour améliorer mon référencement de passer en mode rewriting. Apres avoir lu par mal d'articles je me suis donc lancer dans le grand bain. Mais quelques problemes subsistent.

    J'ai renommé tout d'abord dans mes pages les liens de la facon suivante, sachant que j'ai des tables pour chaque rubrique.
    http://www.actualites-electroniques.com/FR-<?php echo $donnees['rubrique']; ?>-<?php $artistetiret = str_replace(' ', '-', $donnees['artiste']); echo $artistetiret; ?>-<?php $titretiret = str_replace(' ', '-', $donnees['titre']); echo $titretiret; ?>

    Ainsi j'ai remplacé les espaces, de mes variables initiales, par des tirets afin de rendre l'ensembles plus propre et interprétables.

    Si j'ecris un article sur David Guetta - One more time, dans la catégorie Track, le lien doit donc etre http://www.actualites-electroniques.com/FR-Track-David-Guetta-One-Love

    En complément mon fichier .htaccess avait la ligne suivante, afin de traduire cela en langage PHP:
    RewriteRule ^FR-Track-([a-zA-Z0-9\-]+)-([a-zA-Z0-9\-]+)$ Track-Archive.php?artiste=$1&titre=$2 [L]

    L'antislah est là pour que le signe "-" soit bien compris, c'est que j'avais lu dans d'autres sujets. Je pensais donc qu'avec cette formule précédente tout fonctionnerait bien.

    Or il se trouve que lorsque je genere une nouvelle page les variables sont mal intepretées et mes requetes analysent mal ces memes variables, qui sont mélangées entre elles. Le bout d'un titre va allé se mélange avec le nom d'un artiste et mes requetes ne peuvent donc plus marcher.

    Par contre et c'est là ou c'est etonnant, les articles s'affiche correctement si la variable titre est composé uniquement d'un seul et unique mot.

    Au final voici ma question est donc: comment faire en sorte que mes variables soient bien interpretees par le fichier htaccess et que celui ci fasse le distingo entre tiret de separation de variable et tiret pour remplacer les espaces.

    Vous pouvez voir le probleme directement sur mon site ici par exemple :
    http://www.actualites-electroniques.com/FR-Indemodable-Etienne-de-Crec ... -Prix-choc

    Dans le haut de la page il identifie en artiste "Etienne de Crecy Prix" et en titre "choc" alors que le titre réel est "Prix choc"

    Quant à elle la page : http://www.actualites-electroniques.com/FR-Indemodable-Alan-Braxe-and- ... alke-Intro est parfaitement interpretée, avec l'affichage de l'article en question.

    Merci d'avance de vos conseils et de votre aide, parce que là vraiment je galère...
     
  2. weboblog
    weboblog Nouveau WRInaute
    Inscrit:
    19 Juillet 2009
    Messages:
    2
    J'aime reçus:
    0
    Bonjour Dj Aroy,

    Il se pourrait que ton problème vienne du fait que tu utilises le tiret (-) comme séparateur de mot ET comme séparateur de variable.

    Tu devrais essayer d'utiliser l'underscore (_) comme séparateur de variable, du style : nom-du-chanteur_titre-associe et remplacer ta règle de réécriture par celle-ci:

    ^FR-Track-([a-zA-Z0-9\-]+)_([a-zA-Z0-9\-]+)$ Track-Archive.php?artiste=$1&titre=$2 [L]
     
  3. Mountain Magazin
    Mountain Magazin WRInaute occasionnel
    Inscrit:
    1 Octobre 2004
    Messages:
    494
    J'aime reçus:
    0
    Les underscore, c'est pas terrible. Je sais que les moteurs les gèrent mieux, mais c'est de toute façon par esthétique.

    Une autre solution consisterai à glisser un séparateur en dur qui semble faire partie de l'expression :

    -http://www.actualites-electroniques.com/FR-David-Guetta-Track-One-Love

    Ici par exemple, on utilise la rubrique comme séparateur puisqu'elle semble écrite en dur dans ton URL.

    Tu peux utiliser n'importe quelle autre expression tu type "band" au milieu, ce qui supprimera le problème.

    Et comme l'a dit weboblog, sinon, utiliser un séparateur différent tel que l'underscore.

    Dernière solution, mais c'est beaucoup plus lourd, utiliser un routeur qui appelle un fichier unique (un bootstrap dans le langage de Zend Framework par exemple), ce qui procure une souplesse totale dans le choix de ses URL, comme c'est le cas pour wordpress.

    Mais là attention, c'est une autre démarche.
     
  4. dj aroy
    dj aroy Nouveau WRInaute
    Inscrit:
    28 Juillet 2009
    Messages:
    11
    J'aime reçus:
    0
    Merci de la rapidité rapide de ces réponses, qui cernent bien le probleme.
    En effet il s'agit sans doute d'un conflit de tirets.

    Tout d'abord, j'ai lu plusieurs articles qui concluent en disant que le tiret "-" est mieux géré par Google qui correspond à un séparateur de mots alors que l'underscore crée une expression unique.
    Donc je voudrais garder tous ces tirets "-" dans un souci d'esthetique et de clareté.

    De plus j'ai essayé la solution de Mountain Magazin, qui fonctionne avec une limite.
    En effet si l'on rentre l'adresse directement comme cela les pages s'affichent correctement de type :
    http://www.actualites-electroniques.com/FR-Etienne-de-Crecy-Indemodabl ... -Prix-choc

    Par contre si on clique sur un des liens de ma page, la page générée est de la forme:
    http://www.actualites-electroniques.com/FR-artiste-Indemodable-titre1-titre2%3E avec un signe à la fin qui est "%3E". Et donc la page ne s'affiche plus. Que signifie cette petite expression?

    Par ailleurs, j'aurai vraiment voulu savoir s'il est possible de garder cette ordre : rubrique-artiste-titre1-titre2-...
    J'ai cru comprendre que pour le référencement l'ordre des mots n'a pas vraiment de sens. Je voudrais plus garder cette ordre par un souci de lisibilité à nouveau.

    Comment puis-je donc procédéer pour rester avec cette forme (langue-rubrique-artiste-titre), ou artiste et titre sont composé de plusieurs mots et de tirets?
    L'url récursive serait-elle une solution?
     
  5. Mountain Magazin
    Mountain Magazin WRInaute occasionnel
    Inscrit:
    1 Octobre 2004
    Messages:
    494
    J'aime reçus:
    0
    C'est un encodage d'URL, probablement lié à un caractère spécial qui traine dans ton code.

    Voir php urlencode() et urldecode()

    Si tu veux garder cet ordre, par de souci, par contre, il faut soit retirer les tirets des noms d'artistes + morceaux (ce que tu ne veux pas), soit trouver un autre séparateur.

    Tu peux faire rubrique-artiste-musique-titredumorceau

    Tu remplaces musique par ce que tu veux, pourvu que ce soit écrit en dur. Je crois pas que les URL récursives changeront grand chose, à cause des tirets.

    Sinon, reste la solution de revoir complètement l'architecture en utilisant des vues et un routeur, mais là c'est plus la même limonade, via un framework par exemple pour simplifier le travail de développement.
     
  6. VisitezMonSite
    VisitezMonSite WRInaute impliqué
    Inscrit:
    7 Mai 2009
    Messages:
    735
    J'aime reçus:
    0
    utilise un signe / au lieu du tiret ou de lunderscore pour separer quelques variables, cela fera un "effet dossiers" c'est pas mal aussi
     
  7. Mountain Magazin
    Mountain Magazin WRInaute occasionnel
    Inscrit:
    1 Octobre 2004
    Messages:
    494
    J'aime reçus:
    0
    Effectivement, ça peut être une solution propre, mais ça sous entend une arborescence...
     
  8. dj aroy
    dj aroy Nouveau WRInaute
    Inscrit:
    28 Juillet 2009
    Messages:
    11
    J'aime reçus:
    0
    Tout cela me fait beaucoup réfléchir et vos conseils m'ont été d'une grande aide.

    J'ai donc décidé d'opter pour la forme suivante dans le .htaccess :
    Code:
    RewriteRule ^EN-(.*)-rubrique-(.*)$   EN-rubrique-Archive.php?artiste=$1&titre=$2 [L]
    Ce qui me donne donc les adresses suivantes par exemple:
    Code:
    http://www.actualites-electroniques.com/EN-Soul-Central-Timeless-Strings-of-life
    Ainsi, je ne sais pourquoi mais le "%3E" a maitenant disparu et tout fonctionne.

    En effet je voulais éviter de mettre des / ce qui m'obligeait à recréer quasiment tous les liens en interne, notamment les includes, à cause de la nouvelle arborescence engendrée.

    Enfin afin de nettoyer encore plus mes variables titres et artistes je voudrais utiliser la fonction suivante, découverte sur le forum:
    Code:
    function convert_for_uri($text) {
      // Définition du séparateur
      define("SEPARATOR", "-");
    
      $tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées
      $replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalant non accentué
    
      // Mise en minuscule + suppression des lettres accentuées par leur équivalant non accentué
      $text = strtr(strtolower($text),$tofind,$replac);
    
      // Remplacement de caractère non alphanumérique par un séparateur
      $text = ereg_replace("[^a-z0-9]", SEPARATOR, $text);
    
      // Suppression des doubles séparateurs
      while (strstr($text, SEPARATOR . SEPARATOR)) 
        $text = str_replace(SEPARATOR . SEPARATOR, SEPARATOR, $text);
    
      // Retour avec suppression d’un possible séparateur en fin de chaîne
      return(ereg_replace(SEPARATOR . "$", "", $text));
    }
    Malheureusement je ne comprend pas comment intégrer cette fonction. De mes petites connaissance, on doit creer un fichier javascript? Mais apres comment l'appelle t'on dans le code html pour convertir chaque lien?

    Encore merci de votre précieuse aide.
     
  9. Mountain Magazin
    Mountain Magazin WRInaute occasionnel
    Inscrit:
    1 Octobre 2004
    Messages:
    494
    J'aime reçus:
    0
    Déjà, c'est du PHP et pas du javascript.

    Pour utiliser une fonction, tu place ta fonction dans un fichier php que tu appelle dans ta page avec require_once()

    Je tel laisse voir la doc de la fonction.

    Ensuite, pour tranformer un texte, tu fais comme suit :

    Code:
    $text = "Texte où il faut retirer les caractères accentués";
    
    $textSansAccent = convert_for_uri($text);
    
    echo $textSansAccent;
    
    J'espère que ça t'aidera
     
  10. VisitezMonSite
    VisitezMonSite WRInaute impliqué
    Inscrit:
    7 Mai 2009
    Messages:
    735
    J'aime reçus:
    0
    Faux aucun rapport, ce n'est que de la réécriture d'url.
     
  11. dj aroy
    dj aroy Nouveau WRInaute
    Inscrit:
    28 Juillet 2009
    Messages:
    11
    J'aime reçus:
    0
    Merci de ces précisions.
    Je vais changer mes liens en fonctions de vos remarques et voir ce que l'on obtient.

    Pour la question du / dans les liens j'ai fait un test et apparemment certains de mes fichiers ne sont pas lu
    Par exemple une image dont le code est le suivant ne s'affiche plus:
    Code:
    <img src="Divers/icone-personnage-commentaire.jpg" width="45" height="45"/>
    J'ai l'impression que la page va chercher dans le mauvais dossier : style : monsite.com/dossier rubrique/dossier artiste/dossier titre/divers/... et ne trouve donc rien.

    D'ou mon option sur garder les tirets et inclure un mote en dur dedans.

    Je retravaille donc le tout et vous ferais un retour pour vous confirmer que tout es ok.

    Encore merci
     
  12. VisitezMonSite
    VisitezMonSite WRInaute impliqué
    Inscrit:
    7 Mai 2009
    Messages:
    735
    J'aime reçus:
    0
    Oui bien sur, une fois la page html affichée.. de toutes facons il est bien mieux d'écrire plutot src="/Divers/icone.... que directement src="Divers/icone dans tous les cas, même dans les CSS, cela permet d'éviter ce genre de soucis inutiles.

    Mais pour les includes dans php cela ne change absolument rien.

    Cela dit je ne suis pas contre l'utilisation d'un mot comme séparateur, bien au contraire il faut utiliser cela pour choisir un mot-clé de ton site, cela ne pourra qu'être bénéfique si ce mot choisi est également présent dans le titre de la page, le corps, etc.
     
  13. Mountain Magazin
    Mountain Magazin WRInaute occasionnel
    Inscrit:
    1 Octobre 2004
    Messages:
    494
    J'aime reçus:
    0
    +1 pour le mot clé qui ne nuise pas à la lisibilité
     
  14. dj aroy
    dj aroy Nouveau WRInaute
    Inscrit:
    28 Juillet 2009
    Messages:
    11
    J'aime reçus:
    0
    Exactement,
    En tout cas ce forum fut d'une grande aide et je n'hésiterais pas à y revenir.

    Je pense notamment le faire pour voir comment bien rediriger mes pages déjà repertorié par Google et dont les chemins ont maintenant changé....
     
  15. Mountain Magazin
    Mountain Magazin WRInaute occasionnel
    Inscrit:
    1 Octobre 2004
    Messages:
    494
    J'aime reçus:
    0
Chargement...
Similar Threads - Rewriting variables problèmes Forum Date
Problème d'url Rewriting avec des variables URL Rewriting et .htaccess 23 Novembre 2013
Souci d'url rewriting sur une page entre une et deux variables URL Rewriting et .htaccess 10 Novembre 2013
URL Rewriting PB sous domaine et multi variables URL Rewriting et .htaccess 21 Octobre 2012
url rewriting et variables Développement d'un site Web ou d'une appli mobile 5 Octobre 2011
URL Rewriting et multiples variables URL Rewriting et .htaccess 7 Mars 2011
URL Rewriting supprimmer des variables ? URL Rewriting et .htaccess 12 Mai 2010
Rewriting avec des variables variable et homogénéisation URL Rewriting et .htaccess 17 Février 2010
[réglé][Url rewriting] Enlever les variables de sessions URL Rewriting et .htaccess 5 Mars 2009
URL Rewriting problème de la présence de variables URL Rewriting et .htaccess 4 Janvier 2009
Problème de variables dans mon rewriting, valeur limitée ?? URL Rewriting et .htaccess 7 Juin 2008
URl à 2 variables pour rewriting URL Rewriting et .htaccess 21 Décembre 2007
Url rewriting sur url à nombres de mots variables URL Rewriting et .htaccess 8 Septembre 2007
URL Rewriting avec paramètres variables URL Rewriting et .htaccess 23 Août 2007
Url rewriting transmissions de variables URL Rewriting et .htaccess 10 Octobre 2006
Pb rewriting avec variables URL Rewriting et .htaccess 8 Juin 2006
règle url rewriting avec x variables URL Rewriting et .htaccess 30 Mai 2006
Url rewriting et des variables GET URL Rewriting et .htaccess 12 Mars 2006
Rewriting avec 2 variables URL Rewriting et .htaccess 11 Février 2006
url rewriting pour un site sans variables URL Rewriting et .htaccess 3 Janvier 2006
Problème URL rewriting avec 3 variables URL Rewriting et .htaccess 1 Octobre 2005