IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

URL rewriting dynamique


Sujet :

Apache

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut URL rewriting dynamique
    j'ai fait un htaccess avec des lignes que j'ai extrait de la base via un excel
    nettoyé le champ "titre" qui sert à afficher le titre du lien dans le catalogue pour enlever les caractères accentués , virgule , apostrophe , a la fin j'ai un fichier avec ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine On
    RewriteRule  ^guide_voyages_low_cost_billet_avion_pas_cher_afrique\.html$   /site_local/voyages/index.php?level=30&cont=30  [L]							
    RewriteRule  ^guide_voyages_low_cost_billet_avion_pas_cher_proche_orient\.html$   /site_local/voyages/index.php?level=31&cont=31  [L]							
    RewriteRule  ^guide_voyages_low_cost_billet_avion_pas_cher_asie_pacifique\.html$   /site_local/voyages/index.php?level=32&cont=32  [L]
    ce qui me donne par exemple ça

    guide_voyages_low_cost_billet_avion_pas_cher_afrique.html

    à la place de

    index.php?level=30&cont=30

    en effet on me demande de mettre dans l'url "rewrité" le titre qui correspond au champ titre dans ma table

    j'ai environ 600 lignes comme ça, ça marche mais si j'ajoute un enregistrement il faudra que je le rajoute dans le htaccess

    j'essaye de faire quelque chose de dynamique avec les regex, mais ce n'est pas mon fort



    j'ai essayé la règle suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine On
    RewriteRule ^([a-z-A-Z-]+)-([0-9]+)\.html$ /site_local/voyages/index.php?titre=$2 [L]
    mais ça ne marche pas

    ( je teste en local et le htaccess est dans un répertoire nommé voyages)

    peut etre qu'il est impossible de récupérer un paramètre comme le contenu d'un champ d'une table dans un htaccess pour l'inclure dans la nouvelle url sans passer par du php

    si vous aviez un coup de pouce à me filer ça serait super sympa

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par serna Voir le message
    peut etre qu'il est impossible de récupérer un paramètre comme le contenu d'un champ d'une table dans un htaccess pour l'inclure dans la nouvelle url sans passer par du php
    C'est pas peut-être, c'est sûr : mod_rewrite ne se connaîtra pas à une base de données pour récupérer une valeur quelconque dans une table. Pour ton cas, je te propose de rediriger tous les .html vers un script chapeau en PHP qui décodera l'URL et ira consulter la base de données en fonction pour ensuite éventuellement rappeler un autre script par include.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    ç'est un peu trop costaud pour moi ta solution
    ( à moins que tu ne me montre comment tu ferais mais je ne voudrais pas abuser )

    bon je vais essayer la chose suivante
    le champs "titre" dans ma base contient trop de caractères comme les accents , des parenthèse, apostrophe etc.. donc je vais créer un champ appelé "url" ou je dupliquerais le champ titre mais nettoyé de ces caractères indésirables , ensuite dans les appels dynamique au page je vais rajouter comme paramètre la valeur du champ "url"
    par exemple, actuellement j'ai pour les etats unis
    index.php?level=176&cont=34&pays=176

    je vais essayé d'arriver à ça
    index.php?level=176&cont=34&pays=176&url=etats-unis

    ensuite je fait un htaccess avec une expression régulière qui va bien
    et réécrire l'url de manière à ajouter quelques mots clés + le titre

    y'a pu qu'a essayé comme dit l'autre

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    mon lien php est maintenant comme ça (exemple pour l'Afrique )

    index.php?&cont=30&level=30&destination-continent=Afrique

    j'aimerais que le lien réécrit soit comme ceci

    guide-voyages-destination-continent-afrique.html

    j'ai essayé ça mais sans succés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^guide-voyages-([0-9a-zA-Z-]+)-([0-9a-zA-Z-]+)-([0-9a-zA-Z-]+)\.html$  index.php?&cont=$1&level=$2&-destination-continent=$3 [L]
    pourriez vous m'aider car pour l'instant je nage

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    j'ai un peu avançé

    j'ai mis cette règle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine On
    RewriteRule ^guide-([0-9]+)-pas-cher-([0-9]+)-vacances-([a-zA-Z0-9-]+)\.html$   /voyages/index.php?&cont=$1&level=$2&_destination_continent_=$3 [L]
    et donc j'arrive maintenant à cette url

    guide-30-pas-cher-30-vacances-Afrique.html

    serait t'il possible dans l'url réécrite de ne pas mettre les valeurs de paramètres cont et level et d'aboutir à cette url

    guide-pas-cher-vacances-Afrique.html

    merci à vous

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par serna Voir le message
    serait t'il possible dans l'url réécrite de ne pas mettre les valeurs de paramètres cont et level et d'aboutir à cette url

    guide-pas-cher-vacances-Afrique.html
    de manière statique uniquement, malheureusement, car comment Apache peut-il savoir que guide-pas-cher-vacances-Afrique.html, c'est 30 et 30 comme cont et level si ce n'est explicitement donné dans la règle ? Si les paramètres sont vraiment indispensables, Apache ne peut pas les deviner, et on en revient obligatoirement à tes toutes premières règles.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci pour ta réponse

    je vais me débrouiller avec tout ça

    bravo pour ce site !

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    finalement j'ai construit un htaccess en statique, en récupérant les champs nécessaires de la base dans un excel

    solution certes plus old school mais qui me permet de faire à la fois le htaccess mais aussi le listing des url reecrite que j'ai placé dans une page plan de site

    merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script ou appli. d'Urls rewriting (dynamiques)
    Par mozzlo dans le forum Référencement
    Réponses: 1
    Dernier message: 07/11/2010, 10h46
  2. Réponses: 4
    Dernier message: 23/05/2008, 13h58
  3. URL Rewriting dynamique
    Par arnaud_verlaine dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 21/05/2008, 00h29
  4. [URL Rewriting] Du dynamique au static
    Par max44410 dans le forum Apache
    Réponses: 2
    Dernier message: 15/01/2008, 00h34
  5. [MySQL] URL Rewriting dynamique
    Par oranocha dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/10/2007, 23h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo