Redirection d'URL dynamiques

Discussion dans 'URL Rewriting et .htaccess' créé par comptoirdestisseurs, 24 Janvier 2019.

  1. comptoirdestisseurs
    comptoirdestisseurs Nouveau WRInaute
    Inscrit:
    14 Mars 2017
    Messages:
    3
    J'aime reçus:
    0
    Bonjour à tous,

    Je débute en réécriture d'URL et j'avoue ne pas trouver de solution à mon problème malgré la lecture des posts épinglés et de diverses sources.

    J'ai des URL à rediriger qui ressemblent à ça : /recette/gateau?recetteid=1337

    vers un nouveau site passé en https dont l'url est comme ceci : /recette/gateau.html

    La simple Redirect 301 ne fonctionne pas, j'ai donc tenté d'appliquer ce code dans le htaccess, sans succès.
    Code:
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^recetteID=([0-9]+)$ [NC]
    RewriteRule ^/recette/gateau?recipeId=1337$ https://www.example.com/recette/gateau.html [R=301,L,QSD]
    Comment faire pour rediriger correctement ces url dynamiques ?

    Merci de votre aide !
     
  2. colonies
    colonies WRInaute occasionnel
    Inscrit:
    10 Septembre 2006
    Messages:
    490
    J'aime reçus:
    54
    Dans /recette/gateau?recetteid=1337, gateau est unique ou commun à plusieurs recettes ?

    En clair, tu as des urls comme :
    /recette/gateau?recetteid=1337
    /recette/charlotte?recetteid=1338
    /recette/framboisier?recetteid=1339

    ou
    /recette/gateau?recetteid=1337
    /recette/gateau?recetteid=1338
    /recette/gateau?recetteid=1339

    ?

    Au passage, si tu veux simplifier tes URL, le suffixe ".html" me semble plutôt malvenu.
     
  3. rollback
    rollback WRInaute occasionnel
    Inscrit:
    5 Novembre 2018
    Messages:
    461
    J'aime reçus:
    49
    un debut tout début de tutoriel
    Donc on prend un testeur d'url rewritting.
    Il y en a plusieurs sur le web, google est ton ami et les trouvera
    Par exemple : https://htaccess.madewithlove.be/

    On lit la documentation d'apache, si on parle d'apache (dans ce cas) ou la doc de IIS (c'est similaire, dès qu'on a installé le module d'url rewritting, et mieux fait que sur apache parce qu'on peut tester les règles d'url rewritting directement dans l'interface d'IIS qui est vraiment mieux que VI)

    Donc revenons a notre tutoriel, au passage tous les ânes qui font des turoriels oublient qu'il n'y a pas de loin et pas qu'apache sur le web

    Donc on lit la doc et on voit :

    RewriteRule URL_a_réécrire URL_réécrite [drapeau]

    Dans le testeur, on va donc mettre
    RewriteRule meuh.html lavache.html

    et tester l'url (dans l'espoir que meuh.html devienne la vache.html)
    http://www.toto.com/meuh.html

    Ca ne fonctionne pas...

    Il faut marquer le début de premier paramètre avec ^ et fin de premier paramètre avec $
    (ok c'est dévbile, mais apache et ce style de tru, ca date des années 75 et il avait 127 (pas 255) caractères disponibles)

    Donc on écrit
    RewriteRule ^meuh.htm$ lavache.html


    Magie !! ca fonctionne : http://www.toto.com/meuh.html se transforme en http://www.toto.com/meuh.html

    Osons deux règles de suite
    RewriteRule ^meuh.html$ lavache.html
    RewriteRule ^meuh.html$ ledernierEstPrioritaire.html

    Ca marche http://www.toto.com/meuh.html se transforme en http://www.toto.com/ledernierEstPrioritaire.html

    ----------------
    Je vois déjà une première erreur de tous les copier colleur du coin qui ne lisent pas la doc

    (Par chance si on apprend on topdown le réseau, http c'est en haut, donc en premier dans la liste des connaissances et donc en copient collant on s'en sort. Si par contre on apprends en bottomup le réseau, pas de bol http , il faut se farcir tout les cours réseaux avant. )

    RewriteRule ^meuh.html$ lavache.html
    RewriteRule ^lavache.html$ ledernierEstPrioritaire.html

    = ils ont pensé que la première ligne modifiait la requête et donc dès la deuxième ligne on avait déjà transformé la requête. Pas de bol, ce n'est pas comme dans un lanage informatique ou on aurait modifié le contenu de la varaible
    ----------------

    Donc, il existe les drapeux qui permettent de faire plain de truc, des condistions ou, non, if else...

    Dans notre cas, le drapeua [L] qui signifie Last
    Si on ne veux pas que la deuxième redirection bousille la première par exemple :

    RewriteRule ^meuh.html$ lavache.html [L]
    RewriteRule ^meuh.html$ ledernierEstPrioritaire.html

    Le l va faire "sortir" l'url rewritting en l'état. Donc dans notre cas à l'url lavache.html

    Effet de bord pour les burnes qui copient ccollent des règles les unes derrières les autres.
    La requête ressort, souvent est réappelée avec une url intermédiaire... Des conditions ne sont pas appelées......

    ......................
    On a juste vu le tout début...
     
  4. comptoirdestisseurs
    comptoirdestisseurs Nouveau WRInaute
    Inscrit:
    14 Mars 2017
    Messages:
    3
    J'aime reçus:
    0
    Mes URL ressemblent à :

    /recette/gateau?recetteid=1337
    /recette/charlotte?recetteid=1338
    /recette/framboisier?recetteid=1339

    J'ai un paquet d'url unique que je souhaite rediriger mais celle-ci contiennent un "?" que je n'arrive pas à gérer pour mes redirections. Pour la simplification d'URL je suis pas contre mais mon principale souci est vraiment la redirection de ces pages dynamiques pour le moment.

    J'ai l'impression que ce que je souhaite faire est assez simple et pourtant je ne trouve pas de solution à mon problème.

    @rollback Merci pour le tuto ça ne fait jamais de mal, et le testeur de htaccess qui parait fort utile dans mon cas. Ici le testeur me dit que ma règle
    RewriteCond %{QUERY_STRING} ^recetteID=([0-9]+)$ [NC] est incorrecte.

    J'ai corrigé mon code qui contenait une erreur, voici la dernière version (qui ne fonctionne toujours pas :() :
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^recetteID=([0-9]+)$ [NC]
    RewriteRule ^/recette/gateau?recetteid=1337$ https://www.example.com/recette/gateau.html [R=301,L,QSD]

    Si vous avez une idée... Merci !
     
  5. rollback
    rollback WRInaute occasionnel
    Inscrit:
    5 Novembre 2018
    Messages:
    461
    J'aime reçus:
    49
    alors continuons un peu le tuto.
    En dehors de tous les cas alambiqués ou on peut rediriger sur de nombreux critères
    voir des exemples bizarroïdes ici : http://phpsources.org/codes/php/htaccess/index?ressources-symboles.html

    on s"intéressera aux expressions régulières pour reformater le texte de la requête.
    Ici à nouveau, rien de vraiment complexe si on reste dans des expressions qui ne vont pas se modifier elle mêmes ... En gros, pas de truc récursifs sinon on va s'embrouiller.

    Exactement comme pour le caractère d"but et fin de chaine, c'est surtout l'utilisation foireuse de 127 cactères qui se court après qui va générer un beau merdier alors que c'est simple.

    Déjà, comme on va utiliser des caractères pour repérer des zones et que ces caractères peuvent aussi faire partie du texte. On va devoir comme les "échaper".
    Le caractère qui emmerde en gros c'est le . on va écrire \.

    donc admettons qu'on cherche : index.php on aura ^index\.php$
    On a vu dans le tuto partie 1 ^pour début de chaine et $ pour fin de chaine
    Déjà si on pas lu un tuto (le mien = le meilleur des meilleurs des meilleurs) on est mal barré

    Ensuite, en restant simple, on va pouvoir chercher des zones à l'intérieur de la chaine.
    Des zones qui peuvent prendre plusieurs valeurs.
    On marque ces zones avec des [ ]
    Par exemple, 1 seul chiffre qui va donc de 0 à 9 puis qu'on est en 127 caractères
    index0.php
    index1.php
    index2.php
    index3.php
    ....
    index9.php

    pour attraper ces urls on va écrire ^index[0-9]\.php$

    ici entent en scène les copier colleurs qui ont la flemme de lire une doc, qui recopient des tutos a tord et a travers avec au final de la daube

    Bref : in utile de s'étendre sur les multiples règles que l'on peut écrire dans ces [ ] - ca va du simple au très compliqué, et aussi plusieurs syntaxes peuvent décrie à le même motif.
    [0123456789] ...

    à ce stade, différents essais et lectures sur le web, on doit déjà être en mesure de détecter (tester avec les outils - cf tuto partie 1) nos URLs et par exemple simple ment pour l'instant toutes les rediriger vers une même page.

    Pas la peine d"écrire des trucs tout de suite sur les redirections finales, il faut déjà détecter les urls/requêtes que l'on veut rediriger !!!!!



    vos détections fonctionnent, passer aus redirections - next tuto










     
    #5 rollback, 30 Janvier 2019
    Dernière édition: 30 Janvier 2019
  6. rollback
    rollback WRInaute occasionnel
    Inscrit:
    5 Novembre 2018
    Messages:
    461
    J'aime reçus:
    49
    faisons simple
    on peut attraper dans notre détection (voir tuto précédent) des morceaux, et utiliser ces morceaux la parie url redirigée (voir tuto 1)

    Magnifique !!!!!!!!

    à nouveau, rien de compliqué (si au reste au niveau des burnes SEO) , juste de la syntaxe poubelle des années PERL

    Dans la partie Url à réécrire (voir tuto1), qu'on a bricolé dans le tuto 2, c'est à dire par exemple
    ^index[0-9]\.php$ qui nous a permis de repérer les url de la forme index0.php index2.php ....
    on peut metrre des zones entre () ce qui a pour effet de créer des variables qui vont contenir le contenu de la zone.
    Et ces variables, pour bien embrouiller le tout, elles vont s'appeler : $1 pour la première. $2 pour la deuxième ... On va pouvoir les utiliser dans l'URL/La requête réécrite (voir tuto1)

    Prenons un exemple débile pour bien comprendre. Imaginons que je veuille extraire le texte nde de ma requête à modifier pour la placer dans la nouvelle URL requête
    Je vais écrire : ^i(nde)x[0-9]\.php$
    et dans ma nouvelle url/requête $1 vaudra nde

    !!!! mon exemple est simple, mais on peut faire des truc très foireux avec des parenthèses de parenthèses...
    On peut avoir plusieurs paranthèses, et c'est l'ordre de "décompilation"de lexpression régulière qui va les créer .

    En gros dans 99.99 pourcent des cas , on s'en sort avec de l'utl rewritting simple sans avoir besoin d'aller dans les arcanes des expressions régulières et des astuces de l'url rewritting
     
  7. rollback
    rollback WRInaute occasionnel
    Inscrit:
    5 Novembre 2018
    Messages:
    461
    J'aime reçus:
    49
    Grace à mon superbe tutoriel
    on entre index9.php
    on passe la règle
    RewriteRule ^i(nde)(x)([0-9])\.php$ meuh$1$1$2$2$1$1.htm$3l

    Url/ requête de sortie ????

    Voila vous avec le niveau 1 en url rewritting

    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
     
  8. rollback
    rollback WRInaute occasionnel
    Inscrit:
    5 Novembre 2018
    Messages:
    461
    J'aime reçus:
    49
    vous n'avez toujours rien compris, c'est normal, surtout si vous êtes SEO
    donc d'un coté on a la requête à modifier
    exemple : index9.php
    La première chose est qu'il faut la repérer par un ^au début et un $ à la fin
    On obtient
    ^index9\.php$

    le \. est la parce qu'on ne peut pas écrire . c'est interdit
    (première erreur des newbies)

    Si on voulait rediriger juste cette URL, ca suffit
    Mais admettons qu'on veuille rediriger index0.php , index1.php..... index9.php

    C'est lourd d'écrire 9 règles de redirections (quoi que)
    donc on peut écrire :
    ^index[0-9]\.php$

    ------------> on a la détections des requêtes qu'on voulait

    Pour notre nouvelle requête transformée, on a le droit de prendre des morceaux de la requête d'entrée
    Pour repérer ces morceaux (on appelle ces morceaux des motifs) on les place entre ()
    Il vont s'appeler $1 $2 $3 .... $9 (c'est limité à 9)

    Admettons que je veuille une nouvelel requête de la forme ix9.html
    Je vais prendre le i et le x9
    Donc
    ^(i)nde(x[0-9])\.php$ et je crée $1$2.html

    au final j'aurai

    RewriteRule ^(i)nde(x[0-9])\.php$ $1$2.html

    Si je rentre index3.html je ressors avec ix3.html


    $$$$$$$$$$$$$$$$$$$$$$$$$$
    $$$$$$$$$$$$$$$$$$$$$$$$$
    $$$$$$$$$$$$$$$$$$$$$$$$$
    La fin de toutes les questions d'url rewritting !!!!!!!!!!!!!!!!!
    $$$$$$$$$$$$$$$$$$$$$$$$
    $$$$$$$$$$$$$$$$$$$$$$
     
  9. colonies
    colonies WRInaute occasionnel
    Inscrit:
    10 Septembre 2006
    Messages:
    490
    J'aime reçus:
    54
    Code:
    RewriteCond %{QUERY_STRING} ^recetteID=([0-9]+)$ [NC]
    RewriteRule ^recette/(.+)?$ https://www.example.com/recette/$1.html [R=301,L,QSD]
    Que tu peux tester ici :
    https://htaccess.madewithlove.be?share=de2ecd41-af1e-54d8-b522-ab2c4129fd63
     
  10. comptoirdestisseurs
    comptoirdestisseurs Nouveau WRInaute
    Inscrit:
    14 Mars 2017
    Messages:
    3
    J'aime reçus:
    0
    Merci à vous deux pour vos réponses ! J'ai pu trouver réponse à mon problème.

    @colonies : Ton code n'est pas exactement ce que je cherchais car je n'avais pas assez bien précisé les détails de mes URL... J'ai quand même pu retomber sur mes pattes en l'adaptant. Les nouvelles URL contiennent un ID unique qui empêche de créer une règle pour toutes ces URL de recette.

    Pour ceux que ça pourrait aider : l'erreur de mon code initiale qui me bloquait était que je reprenais le paramètre dans l'URL de la ligne RewriteRule

    Voici le code normalement fonctionnel pour mon cas :
    RewriteCond %{QUERY_STRING} ^recetteID=([0-9]+)$ [NC]
    RewriteRule ^recette/gateau$ https://www.example.com/recette/45-gateau.html [R=301,L,QSD]
     
  11. rollback
    rollback WRInaute occasionnel
    Inscrit:
    5 Novembre 2018
    Messages:
    461
    J'aime reçus:
    49
    moi j'aime bien l'url rewritting
    https://www.webrankinfo.com/forum/t/redirection-durl-dynamiques.194969/#post-1586278

    j'aime bien aussi voir que 100% des copier colleur font toujours la même erreur (pourtant je l'ai écrit)

    = ils ont pensé que la première ligne modifiait la requête et donc dès la deuxième ligne on avait déjà transformé la requête. Pas de bol, ce n'est pas comme dans un langage informatique ou on aurait modifié le contenu d'une variable

    C'est un autre sujet, mais je vois aussi souvent les web agency 360 full digital envoyer fièrement le code analytics de google qu'ils ont copier coller. Limite des fois on devrait placer 10 fois le même code avec des identifiants diférents...
     
  12. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    3 747
    J'aime reçus:
    82
    c'est pas un truc du genre

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^recetteid=([0-9]+)$ [NC]
    RewriteRule ^recette/(.*)?recetteid=([0-9]+)$ https://www.example.com/recette/$1.html [R=301,L,QSD]

    Déjà il faut éviter de mélanger recetteid recetteID et recipeId, ça ira mieux.
     
Chargement...
Similar Threads - Redirection dynamiques Forum Date
Redirection sous domaines dynamiques URL Rewriting et .htaccess 13 Janvier 2015
Anciennes pages dynamiques et redirection permanente URL Rewriting et .htaccess 11 Mars 2011
Création URL de redirection pour Référencement google my business Débuter en référencement Samedi à 23:39
Conflit de redirection avec les www URL Rewriting et .htaccess Jeudi à 11:47
Problème sur les redirections de pages profondes URL Rewriting et .htaccess Mercredi à 13:53
Redirection htaccess vers 404 Netlinking, backlinks, liens et redirections 2 Décembre 2019
Redirection url et url mobile htaccess Netlinking, backlinks, liens et redirections 1 Décembre 2019
Redirections permanentes 301 pour produits arrêtés définitivement e-commerce 27 Novembre 2019
Redirection avec variables dans l'URL URL Rewriting et .htaccess 26 Novembre 2019
Redirection url avec paramètres tracking Google Analytics 23 Novembre 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice