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

Langage PHP Discussion :

Expresion reg. et rewriting [Fait]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut Expresion reg. et rewriting
    Bonjour,
    J'ai besoin d'un petit coup de main pour une expression reguliere somme toute basique mais sur laquelle je n'arrive pas a trouver la solution.
    En fait, je travaille avec de l'url rewriting.
    Pour ce cas, mon url "type" est de la forme:
    news.php?op=view&article_id=X
    et donc , il me faut écrire une règle capable de récupérer "news","view" et "X" afin que je puisse les placer dans une url rewrité de type /news/X_nom_que_je_veux.html.

    Bon donc, c'est dans le .htaccess que ca se passe (mais peu importe), et pour ceux qui ne le savent pas, il faut écrire une règle avec des reg exp.
    Ca se présente comme ca:
    RewriteRule
    Ma_Reg_Exp(url en claire) /news/$1_nom_de_mon_article.html
    Donc si quelqu'un pouvait m'aider à définir "Ma_Reg_Exp", ce serait sympa
    Merci d'avance,
    Raideman

  2. #2
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    à mon avis, tu n'as pas tout à fait compris

    ce que tu cherche à faire, la re-écriture dans ce sens ne se fait pas dans le htaccess, mais via un script PHP avant affichage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /*$chaine = 'Ton_code_HTML_avant_renvoi_navigateur';
    $motif = "news.php?op=view&article_id=([0-9]+)";
    $nouvelle = "/news/\\1";
    $chaine = ereg_replace($motif, $nouvelle, $chaine);
    Mais pas de possibilité de mettre un nom comme ça, c'est une expression pour toutes les chaines de ce genre. Si tu veux mettre un nom, plus besoin s'expresseion régulières, un simple str_replace suffit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $chaine = 'Ton_code_HTML_avant_renvoi_navigateur';
    $patterns[] = 'news.php?op=view&article_id=1';
    $patterns[] = 'news.php?op=view&article_id=2';
     
    $new_urls[] = '/news/1_nom_1';
    $new_urls[] = '/news/2_nom_2';
     
    $chaine = str_replace($patterns, $new_urls, $chaine);
    tu n'a plus qu'à afficher $chaine.

    Et dans ton htaccess :

    1° cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule ^/news/([0-9]+).* news.php?op=view&article_id=$1 [L]
    2° cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteEngine on
    RewriteRule ^/news/1_nom_1.* news.php?op=view&article_id=1 [L]
    RewriteRule ^/news/2_nom_2.* news.php?op=view&article_id=2 [L]
    Un très bon tuto pour comprendre le coté obscur le d'URL-rewriting : http://g-rossolini.developpez.com/tu...url-rewriting/
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Merci de ta réponse !
    Tout d'abord, je me contente de tenter de saisir directement dans le navigateur l'url rewrité afin d'accéder a ma page.
    Pour ce qui est des urls à afficher depuis mon code php, je m'en occuperai dans uen deuxième.
    Si je veux juste faire un test en tapant dans l'url /news/1_nom_1.html par exemple, je devrais pouvoir accéder a mon script php news.php juste avec le htaccess non?

    Je bosse encore dessus et si je m'en sors pas, je reviendrai détailler plus précisément la ou je coince.
    merci de ton aide en tout cas.

  4. #4
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    juste avec le htaccess et en rentrant l'URL en dur dans le navigateur, ça devrait passer

    Je suis certain qu'il est possible d'améliorer mon 2° htaccess, puisque l'id est tout de même passée dans l'URL, mais je suis pas un pro des regexp, je sais pas comment remplacer le titre jusqu'à la fin :p
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Bon je ne m'en sors pas en fait ^^
    Je décris ce que j'ai fait:
    j'ai un site www.monsite.fr

    j'ai un script www.mosite.fr/test/news.php

    si je saisis http://www.monsite.fr/test/news.php?...w&article_id=1, je vois ma page correctement.

    Maintenant, dans le répertoire test, je place un htaccess pour le rewriting (je ne veux faire du rewriting que pour le répertoire test.

    avec dedans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule ^/news/([0-9]+).* news.php?op=view&article_id=$1 [L]
    Normalement, si dans l'url je saisis http://www.monsite.fr/test/news/1-nom-1 ,
    je devrais retomber sur ma page non?

    Parce que dans ton post, tu parles de reformater les url que l'on renvoit au client. Mais je pense que je me suis mal exprimé au début, car pour le moment, je veux juste accéder a mon script news.php et je renvois rien au client (saisie dans le navigateur de www.monsite.fr/test/news/1-nom-1.html )
    et je tombe sur une page 404.
    Je sais pas si ca vient du fait que je mets mon htaccess dans un répertoire qui n'est pas la racine ou si il ne manque pas quelque chose..
    Bref, i'm lost comme dirait l'autre.

  6. #6
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    Avec l'URL http://www.monsite.fr/test/news/1-nom-1 et la règle suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^/news/([0-9]+).* news.php?op=view&article_id=$1 [L]
    voila l'url qu'il va te re-créer : news.php?op=view&article_id=1-nom-1

    c'est pour ça que je me suis embêté à mettre une ligne pour chaque page (on peut faire sans, mais je ne sais pas le faire) De plus, je me demande si il ne va pas y avoir un problème de path...

    Essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule ^1-nom-1.* news.php?op=view&article_id=1 [L]
    RewriteRule ^2-nom-2.* news.php?op=view&article_id=2 [L]
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Impeccable, je m'en suis sorti en touchant quelques détails.
    J'ai aussi pris au passage un doc sur developpez concernant les regexp, ca ne me fera pas de mal en tout cas
    Merci de ces informations en tout cas !

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

Discussions similaires

  1. [Débutant]infos ds session sans cookie ? url rewriting ?
    Par Satanas_et_diabolo dans le forum ASP
    Réponses: 8
    Dernier message: 10/10/2006, 17h13
  2. [langage] exp reg: recherche mot ou ensemble de mot
    Par eautret dans le forum Langage
    Réponses: 5
    Dernier message: 14/12/2004, 17h25
  3. Url Rewriting / htaccess
    Par bisi dans le forum Apache
    Réponses: 4
    Dernier message: 25/07/2004, 22h12
  4. Réponses: 4
    Dernier message: 16/02/2004, 16h55
  5. [VB6] Exécuter un .reg
    Par Fab_nabou dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/06/2003, 12h54

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