url rewriting simple

Discussion dans 'URL Rewriting et .htaccess' créé par breizh_web, 18 Décembre 2005.

  1. breizh_web
    breizh_web WRInaute discret
    Inscrit:
    14 Septembre 2005
    Messages:
    77
    J'aime reçus:
    0
    Bonjour,

    Je pense depuis longtemps faire l'url rewriting pour un de mes sites et je viens de faire un test avec une règle simple mais ça ne marche pas.

    Voici ce que j'ai mis dans le .htaccess, mon hébergeur les accepte.
    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^index\.html$ index.php [L]
    mais quand j'essaie d'appeler la page index.html j'ai une erreur 404 qui me dit que le fichier index.php n'est pas trouvé, je comprends pas

    En fait je souhaite utiliser l'url rewriting ensuite sur des adresses du type recette.php?id=1 et avoir mon-titre-recette.html dans le but d'améliorer le référencement mais vu que déjà ça j'y arrive pas, c'est décourageant et comme je débute je n'arrive pas à trouver l'erreur, alors si quelqu'un pouvait m'aider ça me serait d'un grand secours

    Merci d'avance :wink:
     
  2. Borower
    Borower WRInaute passionné
    Inscrit:
    18 Avril 2005
    Messages:
    1 671
    J'aime reçus:
    0
    Peut etre avec :
    Code:
    Options +FollowSymlinks 
    RewriteEngine on 
    RewriteRule ^index\.html$ /index.php [L] 
    Mais bon je ne verrais pas pourquoi.
     
  3. breizh_web
    breizh_web WRInaute discret
    Inscrit:
    14 Septembre 2005
    Messages:
    77
    J'aime reçus:
    0
    Non avec ça aussi ça me donne le même message d'erreur :
    The requested URL /index.php was not found on this server.
     
  4. Borower
    Borower WRInaute passionné
    Inscrit:
    18 Avril 2005
    Messages:
    1 671
    J'aime reçus:
    0
    Code:
    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^exemple.com$ 
    RewriteRule ^(.*)   http://www.exemple.com/$1  [QSA,L,R=301]
    Teste ce code pour voir
    Appelle ton site sans les www
    Tu dois avoir une redirection vers les www
     
  5. breizh_web
    breizh_web WRInaute discret
    Inscrit:
    14 Septembre 2005
    Messages:
    77
    J'aime reçus:
    0
    Je ne comprends pas trop le truc que tu as mis plus haut mais je viens de changer ça en :
    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^recette-philomene.com$
    RewriteRule ^(.*) http://www.recette-philomene.com/$1 [QSA,L,R=301]

    Par rapport à mon nom de domaine et quand j'appelle recette-philomene[.]Com et bien ça marche, c'était pour faire une vérification, un test sur l'url rewritting sur le serveur ?
     
  6. Borower
    Borower WRInaute passionné
    Inscrit:
    18 Avril 2005
    Messages:
    1 671
    J'aime reçus:
    0
    Oui c'etait pour faire un test sur le serveur.
    Si ça ça marche ba je ne voit pas pourquoi ton test simple ne marche pas.
    C'est un mystere.
    DSL mais la je ne vois pas
     
  7. breizh_web
    breizh_web WRInaute discret
    Inscrit:
    14 Septembre 2005
    Messages:
    77
    J'aime reçus:
    0
    Je viens de trouver un truc qui marche :
    Options FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteRule ^(.*).html $1.php

    ça ça marche pour toutes mes pages sans passage de parametre dans l'url alors c'est déjà ça :)
    Ensuite va falloir que je vois comment traduire mes autres adresses, je voudrais avoir le titre de la recette dans l'url mais pour l'instant je passe l'id parce que je sais pas comment enlever les espaces et les remplacer par des tirets et les lettres accentuées !!!

    J'ai vu que sur ton site tu utilises l'url rewriting et que l'url des pages c'est le titre du tableau correspondant, comment fais-tu pour enlever les caractères accentués des titres des tableaux ou bien as tu dans ta base un ligne pour chaque tableau ou tu met le titre avec les tirets et sans caractères accentués, je ne sais pas si je suis très claire là.

    du genre dans ma base une ligne pour chaque recette avec le titre comme ça : blanquette-veau

    Ou bien peut-on dire que Blanquette de veau doit etre traduit en blanquette-veau ???

    ça fait beaucoup de question en même temps :(
     
  8. Borower
    Borower WRInaute passionné
    Inscrit:
    18 Avril 2005
    Messages:
    1 671
    J'aime reçus:
    0
    Voila comment supprimer les accents
    Code:
    <?
    function suppaccents($mot){ 
    $accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"; 
    $ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"; 
    return(strtr($mot,$accents,$ssaccents)); 
    }
    ?>
    Si tu recupere le nom de ta recette avec une requette SQL grace a l' ID de la recette tu peux utiliser comme regle:
    Code:
    Options FollowSymLinks 
    RewriteEngine on 
    RewriteBase / 
    RewriteRule ^([0-9]*)-(.*).html article.php?id=$1 
    Apres a toi de voir comment integrer ton htaccess

    Donne moi l'adresse de ton site Web s tu souhaite de l 'aide.
     
  9. breizh_web
    breizh_web WRInaute discret
    Inscrit:
    14 Septembre 2005
    Messages:
    77
    J'aime reçus:
    0
    Je te remercie pour la fonction pour enlever les accents, je vais essayer, l'adresse de mon site est www[.]recette-philomene[.]com,

    mais pour l'instant je passe l'id de la recette dans l'url alors il va falloir que je modifie ça pour passer le titre avant de penser à faire de l'url rewriting avec le titre dans l'adresse, non ? :?
     
  10. Borower
    Borower WRInaute passionné
    Inscrit:
    18 Avril 2005
    Messages:
    1 671
    J'aime reçus:
    0
    Non fait les deux en meme temps.
    Si tu passe le titre de la recette dans ton code PHP ca va te faire beaucoup de boulot.
    Change tout tes liens
    Fais le htaccess en meme temps.


    Exemple tu recupere l'id de la recette ainsi que son titre
    Tu affiche l'adresse de ta page rewriter du style titre-de-la-recette-id.htm
    Avec ton htaccess il te fera la redirection vers article.php?id=id sans tenir compte du titre de la recette.
    Le tour est joué Google prendra bien en compte le titre de la recette meme si pour ton fichier PHP cela ne sert a rien.
     
  11. breizh_web
    breizh_web WRInaute discret
    Inscrit:
    14 Septembre 2005
    Messages:
    77
    J'aime reçus:
    0
    Désolé j'étais absente hier !

    Là je crois que je ne comprends pas tout ?

    Mes liens sont du type recette.php?id=id, tu voudrais que je remplace mes liens par titre-de-la-recette.html mais comment le faire dans le htaccess, je comprend bien comment réécrire recette.php?id=id en recette-id.html mais comment dire que recette.php?id=id en titre-recette.html

    Là je ne vois pas comment faire, par contre une chose est sur dans le fichier php j'ai bien de toute façon sorti le titre et l'id.

    Dans le cas où on met le titre dans l'url comment est-il possible de remplacer les espaces par des tirets ?

    Je ne sais pas si on peut mais est-il possible d'enlever les mots du style "le,la,les,..." pour ne pas que ça aille dans le titre sinon ça pourrait faire des titres longs quand même !!!

    ça fait beaucoup de questions en une seule fois :wink:
     
  12. Borower
    Borower WRInaute passionné
    Inscrit:
    18 Avril 2005
    Messages:
    1 671
    J'aime reçus:
    0
    Je vais etre plus simple:

    Prenons l'exemple de ta recette:
    recette.php?id_recette=20
    Avec comme titre de recette:
    Crevettes au piment de Cayenne

    Dans ton code PHP pour l'affichage de la liste des recettes:
    tu modifie le lien vers la rectte qui est du style
    Code:
    <a href="recette.php?id_recette=$id">$titreid</a>
    en
    Code:
    <a href="$titreid-$id.htm">$titreid</a>
    Avec ton htaccess tu met:
    Code:
    Options FollowSymLinks 
    RewriteEngine on 
    RewriteBase / 
    RewriteRule ^(.*)-([0-9]*).html /recette.php?id_recette=$2 [L] 
    Si tu souhaite supprimer les espaces et les accents, tu effectue ce bout de code avant:
    Code:
    function suppaccents($titreid){ 
    $accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ "; 
    $ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn-"; 
    return(strtr($titreid,$accents,$ssaccents)); 
    } 
    
    Maintenant tu devrais avoir un lien comme celui ci:
    Code:
    <a href="Crevettes-au-piment-de-Cayenne-20.htm">Crevettes au piment de Cayenne</a>

    Voila je ne sais pas si j'ai été assez claire.
    DSL pour les fautes d'orthographes.
     
  13. breizh_web
    breizh_web WRInaute discret
    Inscrit:
    14 Septembre 2005
    Messages:
    77
    J'aime reçus:
    0
    Ce que je comprends pas ce comment le htacces permet dire que (.*) doit etre remplacer par le titre de la recette vu qu'il n'est pas dans recette.php?id_recette=id

    Mes requetes se servent de $_GET["id_recette"]) pour afficher les différents élements de la recette alors qu'en sera-t-il ensuite, je n'aurais pas besoin de changer ça dans le php, enfin c'est ce que je comprends par contre je comprends vraiment pas du tout comment il va savoir que (.*) doit etre remplacer par le titre de la recette.

    En plus dans mon code php je vois pas comment mettre en oeuvre suppaccents, là je me dis que je suis nulle :cry:

    Enfin, voilà le code de la requete de ma page liste des recettes par exemple qui affiche une liste des recettes suivant la catégorie :
    $query="select r.id, r.titre, r.img_dif, r.tps_prepa, r.tps_cuisson from recette r, recette_cat rc ";
    $query.="where r.id=rc.id and (rc.nom_cat='".$name_cat."') order by r.titre";
    $result=mysql_query($query,$cnx);

    while($recette=mysql_fetch_array($result)){
    $data["listes"].="<li class=\"liste\">
    <span class=\"top liste_titre\"><a href=\"recette.php?id_recette=".$recette[id]."\"><img src=\"images/fleche.gif\" alt=\"->\" /> ".$recette[titre]."</a></span>
    <span class=\"top liste_difficulte\"><img src=\"images/".$recette[img_dif]."\" alt=\"difficulté\" width=\"48px\" height=\"16px\" /></span>
    <span class=\"top liste_tps_prepa\">".$recette[tps_prepa]."</span>
    <span class=\"top liste_tps_cuisson\">".$recette[tps_cuisson]."</span>
    </li>\n\r";
    }

    mais je vois pas comment mettre en oeuvre suppaccents dans la rectte pour remplacer recette.php?id_recette= dans le code par suppaccents de mon titre ???

    Je ne sais pas si tu vas pouvoir m'aider là, j'espère parce que là je m'y perds, j'ai essayer supaccents sur le titre sur les pages de recette ça marche bien par contre mais c'est pas là qu'il faut que je le mette en oeuvre et dans cette requete je ne vois pas comment

    Merci d'avance
    :wink:
     
  14. Borower
    Borower WRInaute passionné
    Inscrit:
    18 Avril 2005
    Messages:
    1 671
    J'aime reçus:
    0
    Salut

    Voici comment mettre en place ton php

    Premier code sans la suppression d'accent:
    Fichier PHP
    Code:
    $query="select r.id, r.titre, r.img_dif, r.tps_prepa, r.tps_cuisson from recette r, recette_cat rc "; 
    $query.="where r.id=rc.id and (rc.nom_cat='".$name_cat."') order by r.titre"; 
    $result=mysql_query($query,$cnx); 
    
    
    while($recette=mysql_fetch_array($result)){ 
    $data["listes"].="<li class=\"liste\"> 
    <span class=\"top liste_titre\"><a href=\"".$recette[titre]."-".$recette[id].".htm\"><img src=\"images/fleche.gif\" alt=\"->\" /> ".$recette[titre]."</a></span> 
    <span class=\"top liste_difficulte\"><img src=\"images/".$recette[img_dif]."\" alt=\"difficulté\" width=\"48px\" height=\"16px\" /></span> 
    <span class=\"top liste_tps_prepa\">".$recette[tps_prepa]."</span> 
    <span class=\"top liste_tps_cuisson\">".$recette[tps_cuisson]."</span> 
    </li>\n\r"; 
    } 
    
    Fichier Htaccess
    Code:
    Options FollowSymLinks 
    RewriteEngine on 
    RewriteBase / 
    RewriteRule ^(.*)-([0-9]*).html /recette.php?id_recette=$2 [L] 

    Avec la suppression d 'accent mais pas sur que cela marche:
    Fichier PHP
    Code:
    $query="select r.id, r.titre, r.img_dif, r.tps_prepa, r.tps_cuisson from recette r, recette_cat rc "; 
    $query.="where r.id=rc.id and (rc.nom_cat='".$name_cat."') order by r.titre"; 
    $result=mysql_query($query,$cnx); 
    
    $recettetitresuppaccent=$recette[titre];
    
    function suppaccents($recettetitresuppaccent){ 
    $accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ "; 
    $ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn-"; 
    return(strtr($recettetitresuppaccent,$accents,$ssaccents)); 
    } 
    
    while($recette=mysql_fetch_array($result)){ 
    $data["listes"].="<li class=\"liste\"> 
    <span class=\"top liste_titre\"><a href=\"$recettetitresuppaccent-".$recette[id].".htm\"><img src=\"images/fleche.gif\" alt=\"->\" /> ".$recette[titre]."</a></span> 
    <span class=\"top liste_difficulte\"><img src=\"images/".$recette[img_dif]."\" alt=\"difficulté\" width=\"48px\" height=\"16px\" /></span> 
    <span class=\"top liste_tps_prepa\">".$recette[tps_prepa]."</span> 
    <span class=\"top liste_tps_cuisson\">".$recette[tps_cuisson]."</span> 
    </li>\n\r"; 
    } 
    
    Fichier Htacccess ne change pas.

    Quand tu dis
    Je vais essayé de repondre a ta question:
    Le fichier PHP appelle une page rewrité donc qui n'existe pas.
    Grace au htaccess
    La page demandé est renvoyé vers la veritable page Web
    Ainsi, en appellant n'importe quelle page Web et avec son id nous nous retrouvons toujours avec la page de l'id
    Exemple:

    J'appelle la page recetteauxpoissons-12.htm
    Le htaccess te redirigera vers la page recette.php?id_recette=12

    J'appelle la page recetteavecviande-12.htm
    Le htaccess te redirigera vers la page recette.php?id_recette=12


    C'est comme cela que de nombreux site Web ce creer enormement de pages satelite.
    En realite il n'existe qu'une seul page Web, mais appellé sous differents noms.

    Attention a cette technique, risque de duplicate content, puis des senctions par google.



    Voila je sais pas si j'ai été tres comprehensible :cry:
     
  15. breizh_web
    breizh_web WRInaute discret
    Inscrit:
    14 Septembre 2005
    Messages:
    77
    J'aime reçus:
    0
    Merci si tu as été compréhensible je vais essayer de mettre ça en oeuvre dans la journée. Ne t'inquiète pas je ne créerais pas de page satellitte j'en connais les risques et je n'ai pas intérêt à faire ça pour mon site de recette qui a déjà pas mal de visites. :wink:

    Merci de ton aide, maintenant à moi de tester !
     
  16. breizh_web
    breizh_web WRInaute discret
    Inscrit:
    14 Septembre 2005
    Messages:
    77
    J'aime reçus:
    0
    Alors j'ai essayé plusieurs choses mais rien ne marche.

    Par contre pour la fonction pour supprimer les accents je l'ai insérée dans mon fichier function comme ça elle est avec les autres donc j'ai fait un test sur recette.php en demandant d'afficher le titre de la recette pour voir si elle marche bien et ça marche j'ai bien gateau-au-chocolat à l'affichage du titre, déjà un point cette fonction marche !!! :D
    En mettant ça puisque la fonction est dans mon fichier de fonction :
    Code:
    $data["id_titre"]=suppaccents($id_titre["titre"]); 
    c'est nickel
    Alors sinon comme tu me le marquais plus haut j'ai tenté de réecriture les liens des recettes sur le fichier de liste des recettes, alors là ça marche pas

    Si je met :
    Code:
    $recettesuppaccent=suppaccents($recette[titre]);
    $query="select r.id, r.titre, r.img_dif, r.tps_prepa, r.tps_cuisson from recette r, recette_cat rc ";
    $query.="where r.id=rc.id and (rc.nom_cat='".$name_cat."') order by r.titre";
    $result=mysql_query($query,$cnx);
    
    while($recette=mysql_fetch_array($result)){
    $data["listes"].="<li class=\"liste\">
    		<span class=\"top liste_titre\"><a href=\"$recettesuppaccent".$recette[id]."\"><img src=\"images/fleche.gif\" alt=\"->\" />  ".$recette[titre]."</a></span>
    		<span class=\"top liste_difficulte\"><img src=\"images/".$recette[img_dif]."\" alt=\"difficulté\" width=\"48px\" height=\"16px\" /></span>
    		<span class=\"top liste_tps_prepa\">".$recette[tps_prepa]."</span>
    		<span class=\"top liste_tps_cuisson\">".$recette[tps_cuisson]."</span>
    	</li>\n\r";
    }
    ça m'affiche bien la page avec la liste des recettes mais les liens sont du type http://www.recette-philomene.com/38 donc là il trouve pas la page, il pourrrait etre un peu plus autonome quand même :wink: , faut tout lui dire !!!

    Je pense que ça vient de l'insertion de $recettesuppaccent dans la boucle while puisque quand je l'insère et bien la variable n'est pas dans la bonne couleur donc généralement c'est qu'il y a un soucis !

    donc j'ai tenté plusieurs choses du genre :
    en mettant
    Code:
    while($recette=mysql_fetch_array($result)){
    $data["listes"].="<li class=\"liste\">
    		<span class=\"top liste_titre\"><a href=\""$recettesuppaccent".$recette[id]."\"><img src=\"images/fleche.gif\" alt=\"->\" />  ".$recette[titre]."</a></span>
    		<span class=\"top liste_difficulte\"><img src=\"images/".$recette[img_dif]."\" alt=\"difficulté\" width=\"48px\" height=\"16px\" /></span>
    		<span class=\"top liste_tps_prepa\">".$recette[tps_prepa]."</span>
    		<span class=\"top liste_tps_cuisson\">".$recette[tps_cuisson]."</span>
    	</li>\n\r";
    }
    là la variable redevient de la bonne couleur dans le code mais erreur, la voici :
    Code:
    Parse error: parse error, unexpected T_VARIABLE in /home2/r/rozenn/www/essai-recette/liste.php on line 43
    Code:
    while($recette=mysql_fetch_array($result)){
    $data["listes"].="<li class=\"liste\">
    		<span class=\"top liste_titre\"><a href=\""$recettesuppaccent"".$recette[id]."\"><img src=\"images/fleche.gif\" alt=\"->\" />  ".$recette[titre]."</a></span>
    		<span class=\"top liste_difficulte\"><img src=\"images/".$recette[img_dif]."\" alt=\"difficulté\" width=\"48px\" height=\"16px\" /></span>
    		<span class=\"top liste_tps_prepa\">".$recette[tps_prepa]."</span>
    		<span class=\"top liste_tps_cuisson\">".$recette[tps_cuisson]."</span>
    	</li>\n\r";
    } 
    entre 2 guillemets elle est toujours de la bonne couleur, mais ça marche pas toujours la même erreur

    En mettant, toujours dans le while ".$recettesuppaccent.", ça marche pas j'ai toujours des liens du type http://www.recette-philomene.com/38

    Alors là je ne vois pas pourquoi il ne veut pas interpreté le code !!! Cette fonction marche pourtant très bien quand je la met sur la recette j'ai bien le titre avec des tirets à la place des espaces et sans accents. :oops:
     
Chargement...
Similar Threads - rewriting simple Forum Date
URL Rewriting simple ne fonctionne pas URL Rewriting et .htaccess 16 Février 2018
Probleme de rewriting (simple mais pas assez pour moi lol) Développement d'un site Web ou d'une appli mobile 9 Novembre 2012
regle url rewriting simple URL Rewriting et .htaccess 18 Juillet 2012
Rewriting simple mais... URL Rewriting et .htaccess 22 Mai 2012
probleme avec URL rewriting simple URL Rewriting et .htaccess 8 Octobre 2011
Probléme d'url rewriting simple URL Rewriting et .htaccess 14 Novembre 2010
URL Rewriting et Made Simple URL Rewriting et .htaccess 8 Novembre 2010
Rewriting simple/pas-simple ! URL Rewriting et .htaccess 27 Décembre 2007
Rewriting simple mais problème chez OVH URL Rewriting et .htaccess 9 Février 2007
Probleme je pense très simple de url rewriting URL Rewriting et .htaccess 9 Janvier 2007
Simple urlrewriting URL Rewriting et .htaccess 10 Juin 2006
Rewriting simple... mais compliqué heeeelp URL Rewriting et .htaccess 25 Février 2006
Url rewriting simple URL Rewriting et .htaccess 5 Novembre 2005
URL Rewriting de pages html - Cas très simple pour un bon ! URL Rewriting et .htaccess 11 Octobre 2005
Url rewriting et les forum simple machines ( smf ) URL Rewriting et .htaccess 17 Août 2005
url rewriting simple ne fonctionnant pas URL Rewriting et .htaccess 24 Mai 2005
url rewriting simple avec du texte URL Rewriting et .htaccess 19 Mai 2005
Url Rewriting simple mais pour un débutant URL Rewriting et .htaccess 20 Mars 2005
URL Rewriting, simple question ? URL Rewriting et .htaccess 21 Juillet 2003
Paramètres urls & urlrewriting => alphabétiques ou codés ? Problèmes de référencement spécifiques à vos sites 30 Mars 2022