Mes débuts dans l'URL Rewriting

Discussion dans 'URL Rewriting et .htaccess' créé par MECANO-OVH, 14 Novembre 2018.

  1. MECANO-OVH
    MECANO-OVH Nouveau WRInaute
    Inscrit:
    14 Novembre 2018
    Messages:
    7
    J'aime reçus:
    0
    Bonjour, je viens vers vous (pour ma toute première fois sur un forum) car après avoir parcouru beaucoup de forums et avoir appliqué un tas de choses dans mon fichier .htaccess je n'arrive toujours pas à faire fonctionner l'url rewriting des pages de mon site.

    Mon site a une structure très simple.
    En gros il se résume à 2 types d'adresse URL.

    La pagination et les articles.

    Type d'adresse pour la pagination : http://www.exemple.ovh/?numeroPagePanne=1
    Dans ce cas, seul le dernier chiffre change en fonction de la page consultée.

    Type d'adresse pour les articles : http://www.exemple.ovh/?clefPanne=2529
    Dans ce cas, seuls les derniers chiffres changent en fonction de l'article consulté.

    Après avoir vu l'article https://www.webrankinfo.com/dossiers/techniques/tutoriel-url-rewriting

    La page "test" http://www.exemple.ovh/inconnu.html fonctionne.
    Le service URL rewriting est bien activé sur mon server Apach 2 sous debyan.

    J'ai donc essayé le code suivant :
    # Test URL Rewriting
    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^inconnu.html$ /test/test.html [L]

    # Réécriture des URL de pagination
    RewriteRule ^Page-([0-9]+)).html$ /?numeroPagePanne=$1 [L]
    # URL prise en exemple http://www.exemple.ovh/?numeroPagePanne=1

    # Réécriture des URL des fiches de panne
    RewriteRule ^Panne-([0-9]+)).html$ /?clefPanne=$1 [L]
    # URL prise en exemple http://www.exemple.ovh/?clefPanne=2529

    Mais cela ne fonctionne pas.

    Quelqu'un pourrait il m'aider ?

    Merci par avance
     
  2. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    3 708
    J'aime reçus:
    79
    Faux :
    RewriteRule ^Page-([0-9]+)).html$ /?numeroPagePanne=$1 [L]

    Correct :
    RewriteRule ^Page-([0-9]+)\.html$ /?numeroPagePanne=$1 [L]
     
  3. MECANO-OVH
    MECANO-OVH Nouveau WRInaute
    Inscrit:
    14 Novembre 2018
    Messages:
    7
    J'aime reçus:
    0
    Bonjour et merci, donc, je viens d'essayer ce code :

    # Réécriture des URL de fiche de panne
    RewriteRule ^Page-([0-9]+)\.html$ /?numeroPagePanne=$1 [L]
    # URL prise en exemple http://www.exemble.ovh/?numeroPagePanne=1

    # Réécriture des URL de fiche de panne
    RewriteRule ^Panne-([0-9]+)\.html$ /?clefPanne=$1 [L]
    # URL prise en exemple http://www.exemple.ovh/?clefPanne=2529

    Sous cette forme, les pages affichées ne sont plus en erreur, le contenu affiché est intact.
    Mais l'URL n'est pas réécrite.

    Y aurait il autre chose à faire ?

    Merci beaucoup ;-)
     
  4. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    3 708
    J'aime reçus:
    79
    Je ne comprend pas bien ce que tu cherches à faire ou à nous dire.
    Tout à l'heure tu disais que "cela ne fonctionne pas" et maintenant tu dis "les pages affichées ne sont plus en erreur". Alors est-ce que ça ne fonctionnait pas ou est-ce qu'il y avait une erreur (genre erreur 500) ? Tu n'avais jamais parlé d'une quelconque erreur avant.

    Quand tu dis "le contenu affiché est intact" tu parles du contenu affiché sur la ligne d'adresse ou dans la page ?

    Quand tu dis "l'URL n'est pas réécrite" tu attends quoi par réécriture ?

    Le principe c'est d'appeler une page de type http://example.com/Page-123.html et d'appeler le script php http://example.com/index.php?numeroPagePanne=123

    Ce qui s'affiche a l'écran doit correspondre au contenu qui correspond à l'id 123 et l'url qui est affichée dans la barre d'adresse ne doit surtout pas être réécrite mais doit être http://example.com/Page-123.html et personne ne doit savoir que la page qui est exécutée sur le serveur est index.php

    Au passage je te déconseille d'utiliser des majuscules dans les URL car Apache tourne sous Unix et il est sensible à la casse.
     
  5. MECANO-OVH
    MECANO-OVH Nouveau WRInaute
    Inscrit:
    14 Novembre 2018
    Messages:
    7
    J'aime reçus:
    0
    Merci pour votre réponse.
    Et excusez moi pour cette description qui n'est visiblement pas très claire.

    En fait, lors de ma première question, avec l'erreur de syntaxe dans la formule.

    RewriteRule ^Page-([0-9]+)).html$ /?numeroPagePanne=$1 [L]
    Le contenu de ma page (contenu visible sur le net) ne s'affichait pas. La page était en erreur.

    Mais avec la correction que vous m'avez fait apporter à la formule " \ "la page s'affiche correctement mais l'URL ne change pas.

    Je m'attendais à voir :
    RewriteRule ^Page-([0-9]+)).html$ /?numeroPagePanne=$1 [L]
    # URL prise en exemple http://www.exemple.ovh/?numeroPagePanne=1

    http://www.exemple.ovh/Page=1

    RewriteRule ^Panne-([0-9]+)).html$ /?clefPanne=$1 [L]
    # URL prise en exemple http://www.exemple.ovh/?clefPanne=2529

    http://www.exemple.ovh/Panne=2529

    Le but final étant d'utiliser la balise "Title" de la page =2529 à la place du mot "Panne".
    Comme par exemple
    http://www.exemple.ovh/Contenu de la balise title=2529

    Cela est il possible ?
    Merci encore.
     
    #5 MECANO-OVH, 15 Novembre 2018
    Dernière édition: 15 Novembre 2018
  6. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    3 708
    J'aime reçus:
    79
    ouais... ce forum est très pénible à utiliser. C'est pour cette raison que je n'y passe plus de temps
     
  7. MECANO-OVH
    MECANO-OVH Nouveau WRInaute
    Inscrit:
    14 Novembre 2018
    Messages:
    7
    J'aime reçus:
    0
  8. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    3 708
    J'aime reçus:
    79
    Ok. Je pense que tu n'as pas bien saisi comment fonctionne l'url rewriting, à quoi ça sert, et encore moins ce que tu as codé.

    Ce qui me fait dire ça c'est le commentaire # URL prise en exemple et encore pire, ce que tu as ajouté en dessous qui est censé correspondre à ce que tu as codé dans la règle de réécriture mais qui pourtant ne correspond pas du tout à ce qu'il y a de codé

    Tu écris maintenant : Page=1
    alors que dans la règle il y a : ^Page-([0-9]+)\.html$
    ^
    signifie : débute par
    $ signifie : se termine par
    On trouve bien le mot : Page
    mais ensuite il doit y avoir un tiret
    [0-9]
    signifie : n'importe quel caractère compris entre 0 et 9
    + signifie : l'expression précédente est répétée (donc n'importe quel caractère compris entre 0 et 9 pouvant se répéter de 1 à n fois)
    \. signifie : présence d'un point (on est obligé de mettre un \ pour l'échapper, c'est une question de syntaxe)
    html signifie : html
    les parenthèses représentent ce que tu vas retrouver plus loin en tant que $1. Tu as une parenthèse ouvrante et une parenthèse fermante (dans ta première version il y avait deux parenthèses fermantes, donc en relisant simplement ce que tu avais écris tu aurais du t'en rendre compte rapidement)

    donc ^Page-([0-9]+)\.html$ correspond à la traduction de quelque chose qui est par exemple : http://www.exemple.ovh/Page-1.html

    Maintenant tu parles de : Page=1
    On ne comprend pas d'où ça sort

    Page=1 ça s'écrirait comme ceci :
    ^Page=([0-9]+)$

    Le principe de l'url rewriting c'est d'utiliser des url fictives qui n'existent pas réellement sur le serveur pour les rediriger vers une url unique qui existe sur le serveur et de communiquer des paramètres à cette url

    Quand tu écris : # URL prise en exemple http://www.exemple.ovh/?numeroPagePanne=1
    c'est en fait l'adresse de l'url de destination, celle qui existe sur le serveur. Tu dois avoir une page php, qui de toute évidence est index.php puisque tu ne donnes pas le nom de cette page
    ? indique que la suite ce sont des paramètres
    numeroPagePanne est le nom de l'un de ces paramètres (un nom à la con au passage)
    = est le signe égal
    1 est la valeur du paramètre numeroPagePanne

    En fait, la première règle signifie que quand l'internaute tape l'adresse : http://www.exemple.ovh/Page-1.html ça le redirige au niveau du serveur à l'adresse http://www.exemple.ovh/?numeroPagePanne=1
    Mais l'adresse qui reste affichée dans la barre d'adresse du navigateur est http://www.exemple.ovh/Page-1.html et c'est cette url qui sera référencée dans google. C'est cette url qui doit être utilisée dans les liens que tu peux faire à l'intérieur du site. C'est la seule url qui est visible de l'extérieur.

    Où ça se complique c'est quand tu code la seconde règle :

    RewriteRule ^Panne-([0-9]+)).html$ /?clefPanne=$1 [L]

    Ca signifie qu'avec une autre forme d'url, (Panne-2529.html) tu exécute le script serveur qui est le même que pour la première règle, mais en lui communiquant un paramètre différent.
    Le paramètre qui est valorisé cette fois est clefPanne

    Tu ne trouves pas que c'est un peu compliqué d'avoir un seul script qui gère deux types de paramètres différents ? Et ce qui n'est pas très logique c'est que les deux paramètres ne sont pas valorisés systématiquement.

    Le plus simple serait d'avoir deux scripts php qui traitent chacun une des fonctionnalité.

    Si ce script est déjà écrit et traite bien les deux fonctionnalité je trouverai plus logique de l'appeler en lui communiquant les valeurs de tous les paramètres (à zéro s'ils ne sont pas valorisés)

    Ca donnerait des règles comme ceci :
    RewriteRule ^Page-([0-9]+)).html$ /?numeroPagePanne=$1&clefPanne=0 [L]
    RewriteRule ^Panne-([0-9]+)).html$ /?numeroPagePanne=0&clefPanne=$1 [L]


    Oui, c'est tout à fait possible mais en ce qui concerne la balise Title ça va te compliquer la vie car elle peut faire jusqu'à 80 caractères et elle-même contenir des chiffres. Et tu peux être amené à changer le title de ta page, ce qui va du même coup changer l'url de la page et créer des gros problèmes car il faudra alors changer tous les liens qui mènent vers cette page et pour les liens externes ça va créer des erreurs 404

    Il faudrait en plus que tu utilises un indice qui te permette de savoir où se trouve le numéro. Exemple : -id2529
    Tu pourrais alors avoir une url qui s'écrit :
    http://www.exemple.ovh/blabla du titre-id2529.html

    %20 représente les espaces (un autre soucis à régler)

    Et quand tu auras des caractères spéciaux dans le title ça va être une autre source d'emmerdes.

    Mais comme ta page est enregistrée dans une base de données tu peux très bien ajouter un champ à cette base de donnée qui va contenir l'url propre, du moins celle qui précède le -id2529

    Ensuite dans ton script il faut bien vérifier que l'url qui a été saisi corresponde exactement à celle qui est prévue car sinon c'est le risque de doublons d'url avec même contenu car la règle affichera les mêmes contenus pour les urls suivantes :
    blabla-id2529.html
    blibli-id2529.html
    tototiti-id2529.html

    Tu noteras bien que je met toujours .html à la fin des urls car c'est ce que tu as codé dans ta règle :
    \.html$
    Tu veux que ça se termine par .html
    Alors je ne comprend pas pourquoi tu te mets à parler de =2529 puisque dans la règle que tu as codé tu veux que ce soit un -, un nombre, un point, et se terminant par html
    Si tu n'es pas clair dans ta tête avec tes propres choix l'url rewriting n'est pas prêt de fonctionner car il fait bêtement et méchamment ce qui est demandé et ne cherche pas à interprêter. Ce n'est pas une IA.
     
  9. MECANO-OVH
    MECANO-OVH Nouveau WRInaute
    Inscrit:
    14 Novembre 2018
    Messages:
    7
    J'aime reçus:
    0
    Merci beaucoup, c'est vraiment très sympa d'avoir pris le temps de m'expliquer tout cela.

    Ce que je veux (dans ma tête) est clair.
    C'est que, jusqu'ici je ne comprenais pas très bien la syntaxe du Rewriting.

    Merci encore, je vais bricoler avec tout ça.
     
  10. pharell22
    pharell22 Nouveau WRInaute
    Inscrit:
    18 Février 2019
    Messages:
    2
    J'aime reçus:
    0
    Merci indigene pour ton post expliquant le fonctionnement du rewriting url, j'avais mal compris comment l'utiliser malgré la lecture de plusieurs tutos.
    Ta réponse m'a été salutaire, par contre le ton employé est déplacé ... on a tous été débutant un jour.
     
  11. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    3 708
    J'aime reçus:
    79
    Tu dis ça parce que tu ne me connais pas. J'utilise toujours ce ton. Et ce n'est pas une question de débutant ou non. Où vois-tu de la moquerie dans ce que j'ai écris parce que l'intervenant était débutant (ou pas) ? Si on accuse quelqu'un de quelque chose il faut en apporter la preuve. Je ne pense pas avoir fait état d'un possible débutantisme à aucun moment et j'ai encore moins utilisé un ton déplacé.
    D'ailleurs sur un forum le principe est de débattre et que chacun apporte ses idées et sa propre vision des choses. Venir écrire un message juste pour contredire un autre intervenant en le citant ce n'est pas très fair-play et ce n'est pas l'essence d'un forum. On peut parfaitement avoir des points de vue différents et dans ce cas on expose ses propres points de vue. Mais on le fait en respectant les points de vue des autres et sans les critiquer.
    Pour un premier message, venir critiquer directement la façon de s'exprimer de quelqu'un d'autre, c'est un peu moyen.
    Désolé de réagir de la sorte mais quand on me rentre dedans je dégaine direct.
     
  12. pharell22
    pharell22 Nouveau WRInaute
    Inscrit:
    18 Février 2019
    Messages:
    2
    J'aime reçus:
    0
    Je me suis inscris pour te remercier de base car je bloquais depuis hier soir avec des tutos qui ne me faisaient que m'embrouiller un peu plus après chaque lecture.

    Te dire que ta manière de répondre est déplacé n'est que le ressenti de ma lecture, nullement une critique ou une agression mais un simple constat.
    Bref fin de la parenthèse en ce qui me concerne, j'ai du travail qui m'attend.

    Bonne journée et merci encore, grâce à tes lumières ça marche niquel.
     
  13. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 809
    J'aime reçus:
    242
    NB: le rewriting comme ça n'est qu'une rustine, en général on utilise un point d'entrée commun (AKA dispatcher) et c'est le framework qui s'occupe du reste.
     
  14. rollback
    rollback WRInaute occasionnel
    Inscrit:
    5 Novembre 2018
    Messages:
    461
    J'aime reçus:
    49
    moi je vois qu'une solution : "service URL rewriting est bien activé sur mon server Apach 2 sous debyan."
    passer sous une autre distribution de Linux
     
Chargement...
Similar Threads - débuts Rewriting Forum Date
Mes débuts en e-commerce Demandes d'avis et de conseils sur vos sites 1 Juillet 2013
Google Analytics : Variables personnalisées et compte "Débuts de visite" Google Analytics 2 Octobre 2012
Google fait ses débuts dans la mode Google : l'entreprise, les sites web, les services 17 Novembre 2010
Les débuts d'un site... Netlinking, backlinks, liens et redirections 17 Août 2010
mes débuts avec google analytics Google Analytics 22 Avril 2010
Débuts en référencement Débuter en référencement 12 Décembre 2009
supprimer /index.html sans url rewriting, possible ? URL Rewriting et .htaccess Mercredi à 21:02
Je bloque sur le rewriting des URL contenant un ? URL Rewriting et .htaccess 3 Septembre 2019
récupération du get après rewriting URL Rewriting et .htaccess 21 Juin 2019
Ralentissement url rewriting URL Rewriting et .htaccess 1 Mai 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice