Petit problème d'UR, besoin de vos lumières

Discussion dans 'URL Rewriting et .htaccess' créé par sdamain, 25 Octobre 2004.

  1. sdamain
    sdamain WRInaute passionné
    Inscrit:
    14 Octobre 2003
    Messages:
    1 055
    J'aime reçus:
    0
    Bonjour a tous,

    Je souhaite réécrire ce genre d'url :
    - .../colocation/coloc.php?pays=pays-bas&ville=rotterdam
    - .../colocation/coloc.php?pays=france&ville=le-mans
    ...

    La 1ère et la 2ème variable transmet une valeur qui peut être composée d'un "-" pour séparer un espace.
    La 2ème variable peut également servir à transmettre une valeur en chiffres.

    De quelle manière dois je réécrire ceci ?

    J'ai essayé avec :
    Code:
    RewriteRule ^colocation/([-0-9a-zA-Z]+)-([-0-9a-zA-Z]+)-colocation.html$ /colocation/coloc.php?pays=$1&ville=$2
    Mais sans succès ... :cry:

    Merci,
    Sébastien.
     
  2. maxttb
    maxttb WRInaute occasionnel
    Inscrit:
    27 Février 2004
    Messages:
    387
    J'aime reçus:
    0
    Enlève donc le premier tiret dans "[-0-9a-zA-Z]". Mieux, remplace les par des \w, ca devrait marcher aussi bien AMHA
    Code:
    RewriteRule ^colocation/(\w+)-(\w+)-colocation.html$ /colocation/coloc.php?pays=$1&ville=$2
    
     
  3. sdamain
    sdamain WRInaute passionné
    Inscrit:
    14 Octobre 2003
    Messages:
    1 055
    J'aime reçus:
    0
    Aucune des 2 solutions ne fonctionnent malheureusement
     
  4. maxttb
    maxttb WRInaute occasionnel
    Inscrit:
    27 Février 2004
    Messages:
    387
    J'aime reçus:
    0
    Quelle est ton erreur? 500 ou 404? Car de ca dépend la manière de résoudre ton problème...
    Essaye peut être cela:

    RewriteRule ^colocation/([\-0-9a-zA-Z]+)-([\-0-9a-zA-Z]+)-colocation.html$ /colocation/coloc.php?pays=$1&ville=$2

    Après plus mûre reflexion, tu devrais peut être choisir un autre séparateur pour la ville et le pays. Comment savoir si un tiret fait partie intégrante du nom de la ville ou si ca signifie "fin du pays, début de la ville"?
    Ce n'est que mon avis, mais je pense que des URLs du type "/colocation/france/metz/" par exemple serait peut-être plus élégant et tout aussi efficace...
     
  5. sdamain
    sdamain WRInaute passionné
    Inscrit:
    14 Octobre 2003
    Messages:
    1 055
    J'aime reçus:
    0
    En fait en ce moment je suis en train de créer la partie PHP (function replace_for_mod_rewrite).
    J'ai appliqué tes conseils mais cela ne fonctionne pas : le lien n'est pas transformé.

    Admettons que je veuille transformer ce type d'url (sans tiret dans les valeurs des variables) :

    .../colocation/coloc.php?pays=france&ville=paris

    Voici ce que je met dans le fichier PHP avec la fonction replace_for_mod_rewrite :
    Code:
    <?php
    
    function replace_for_mod_rewrite(&$s)
    {
    $urlin = 
    array(
    "'(?<!/\/)colocation/coloc.php\?pays=([0-9a-zA-Z]+)&ville=([0-9a-zA-Z]+)'",
    );
    $urlout = array(
    "colocation/\\1-\\2-colocation.html",
    ); 
    $s = preg_replace($urlin, $urlout, $s); 
    return $s; 
    }
    
    ?>
    
    J'ai essayé d'autres combinaisons mais rien n'y fait.

    Merci pour ton aide.
     
  6. maxttb
    maxttb WRInaute occasionnel
    Inscrit:
    27 Février 2004
    Messages:
    387
    J'aime reçus:
    0
    J'ai essayé vite fait chez moi, ca fonctionne (le petit script PHP et l'URL rewriting que je t'ai donné en dernier)... Que veux-tu dire par "le lien n'est pas transformé" ?
     
  7. sdamain
    sdamain WRInaute passionné
    Inscrit:
    14 Octobre 2003
    Messages:
    1 055
    J'aime reçus:
    0
    Lorsque je passe sur le lien non rewrité, il y reste (non rewrité), donc le script PHP n'est pas pris en compte.
    Etrange car j'ai déjà utilisé cela a plusieurs reprises sans problème pour d'autres sites et ici pas moyen de le faire fonctionner.
     
  8. maxttb
    maxttb WRInaute occasionnel
    Inscrit:
    27 Février 2004
    Messages:
    387
    J'aime reçus:
    0
    J'ai peur de ne pas saisir...
    Tu veux dire que quand tu vas à l'adresse "colocation/coloc.php?pays=france&ville=le-mans", l'URL reste telle quelle dans la barre d'adresse et donc que tu n'est pas redirigé vers la page rewritée?
    Ou
    Quand tu utilises la fonction "replace_for_mod_rewrite", celle-ci ne fait aucune modification?

    Dans le dernier cas, utilise peut-être ca:
    Code:
    function replace_for_mod_rewrite(&$s)
    {
    $urlin = "'colocation/coloc.php\?pays=([0-9a-zA-Z]+)&ville=([0-9a-zA-Z]+)'";
    $urlout = "colocation/\\1-\\2-colocation.html";
    
    $s = preg_replace($urlin, $urlout, $s);
    
    return $s;
    }
     
  9. sdamain
    sdamain WRInaute passionné
    Inscrit:
    14 Octobre 2003
    Messages:
    1 055
    J'aime reçus:
    0
    Quand j'utilise la fonction "replace_for_mod_rewrite", celle ci ne fait aucune modification.
    J'ai essayé ta dernière solution mais même problème.
    J'en viens a me demander si il n'y a pas autre chose qui empêche le bon fonctionnement de la fonction.
     
  10. maxttb
    maxttb WRInaute occasionnel
    Inscrit:
    27 Février 2004
    Messages:
    387
    J'aime reçus:
    0
    Ca marche très bien chez moi...

    Code:
    <?php
    
    function replace_for_mod_rewrite(&$s)
    {
    $urlin = "'colocation/coloc.php\?pays=([0-9a-zA-Z]+)&ville=([0-9a-zA-Z]+)'";
    $urlout = "colocation/\\1-\\2-colocation.html";
    
    $s = preg_replace($urlin, $urlout, $s);
    
    return $s;
    }
    
    $test = "../colocation/coloc.php?pays=france&ville=paris";
    
    echo replace_for_mod_rewrite($test);
    
    ?>
    
    me retourne "../colocation/france-paris-colocation.html".
    Honetement, je sèche...
     
  11. sdamain
    sdamain WRInaute passionné
    Inscrit:
    14 Octobre 2003
    Messages:
    1 055
    J'aime reçus:
    0
    Bizzard... j'ai fais comme toi, j'ai mis une var $test a la fin du script PHP pour voir ce que ca donnait et ca fonctionne, le echo me donne l'url au format modié comme je le souhaite. Par contre (alors que je suis tjs dans la page où les liens doivent être modifiés), les liens que je souhaite voir modifié ne bouge pas :roll:

    Comment est ce possible?
     
  12. sdamain
    sdamain WRInaute passionné
    Inscrit:
    14 Octobre 2003
    Messages:
    1 055
    J'aime reçus:
    0
    Apparement le problème apparait uniquement lorsque j'utilise un répertoire (dans les essais il s'agit du répertoire /colocation/).
    En mettant les fichiers dans le répertoire principale du site, cela fonctionne.
     
  13. maxttb
    maxttb WRInaute occasionnel
    Inscrit:
    27 Février 2004
    Messages:
    387
    J'aime reçus:
    0
    Chez moi, j'ai essayé avec succès :

    /.htaccess
    /index.php (avec le script de test de la fonction replace_for_mod_rewrite)
    /colocation/coloc.php
     
  14. sdamain
    sdamain WRInaute passionné
    Inscrit:
    14 Octobre 2003
    Messages:
    1 055
    J'aime reçus:
    0
    Ok maintenant ca fonctionne sans utiliser de repertoire :)

    Mais j'ai un autre soucis : je suis dans le fichier rewrite sous la forme ...france-paris-colocation.html, la page s'affiche bien (pas d'erreur 404...) mais je n'arrive pas a recuperer la valeur des variables (coloc.php?pays=france&ville=paris).
    J'ai utilise ces 2 fonctions sans succes :
    - echo $HTTP_GETVARS['pays'];
    - echo $_GET['pays'];

    Mon .htaccess devrait etre OK puisque je ne recois pas d'erreur.
    Aurais tu une idee?

    Merci.
     
  15. maxttb
    maxttb WRInaute occasionnel
    Inscrit:
    27 Février 2004
    Messages:
    387
    J'aime reçus:
    0
    Tu as oublié un '_' dans ta variable:
    echo $HTTP_GET_VARS['pays'];

    Sinon, que te dis :
    echo getenv('QUERY_STRING');
    ?
     
  16. sdamain
    sdamain WRInaute passionné
    Inscrit:
    14 Octobre 2003
    Messages:
    1 055
    J'aime reçus:
    0
    Ca va j'ai trouvé la solution, le problème venait du code PHP de la page de résultats ...

    Merci beaucoup pour ton aide précieuse.
    Sebastien.
     
Chargement...
Similar Threads - problème besoin lumières Forum Date
Help, besoin de vos lumières sur un problème qui date. Crawl et indexation Google, sitemaps 24 Février 2014
Problème indexation avec snapshot html. Fonctionne à moitié. Besoin d'aide !! Problèmes de référencement spécifiques à vos sites 6 Janvier 2015
Problème référencement après 4 ans d'activité [Besoin d'aide] Problèmes de référencement spécifiques à vos sites 19 Mars 2014
Problème d'affichage : besoin de votre aide ! Développement d'un site Web ou d'une appli mobile 30 Mars 2013
besoin d'aide sur probleme de div déployables ... Développement d'un site Web ou d'une appli mobile 9 Septembre 2012
ENORME problème de code malveillant - Besoin d'aide SVP ! Référencement Google 8 Mai 2012
Gros problème jai suprimer phpbb_config besoin d'aide Développement d'un site Web ou d'une appli mobile 9 Septembre 2010
Besoin d'un pro pour probléme étrange Développement d'un site Web ou d'une appli mobile 9 Août 2010
Besoin conseil probleme positionnement Débuter en référencement 5 Janvier 2010
gro probléme besoin d'aide en urgence svp Débuter en référencement 21 Décembre 2009
Probleme ovh svp besoin d'aide de client Développement d'un site Web ou d'une appli mobile 17 Juillet 2009
problème nom de domaine en fr sur google, besoin d'aides!!! Problèmes de référencement spécifiques à vos sites 20 Octobre 2008
Probleme avec mon htaccess et redirection : besoin d'AIDE! URL Rewriting et .htaccess 5 Octobre 2008
Probleme avec un meta tag : besoin d'aide Débuter en référencement 9 Novembre 2007
sandbox ? besoins de precision pour contourner le probleme Débuter en référencement 16 Juin 2007
Besoin d'aide - Problèmes non résolu Développement d'un site Web ou d'une appli mobile 27 Novembre 2006
Problème avec régie Mailing, besoin de témoignages Administration d'un site Web 16 Octobre 2006
Besoin d'aide Problème TemplateBeginEditable name="doct Débuter en référencement 12 Octobre 2006
problème à l'horizon , besoin d'avis et conseils !!! Développement d'un site Web ou d'une appli mobile 30 Mai 2006
[Besoin d'aide] Gros problème avec mes statistiques Administration d'un site Web 18 Mai 2005