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] Regex complexe


Sujet :

Apache

  1. #1
    Membre du Club Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 45
    Points
    45
    Par défaut [Url Rewriting] Regex complexe
    Bonjour à tous,

    Alors j'ai un regex de ce type :

    RewriteRule ^(.*)-(.*)-(.*).html$ $1.php?id=$2&news=$3 [L]

    Une fonction qui me vire les espaces et caracteres speciaux d'une chaine en "_".

    Donc si je lui envoi :

    $text = "hello c'est moi";
    echo Nstr($text);

    Sa me renvoi : "hello_c_est_moi" .

    Si l'id de la news "hello c'est moi" est 1 j'ai une url de ce type :

    article-1-hello_c_est_moi.html

    Seulement j'aimerais qu'elle soit comme sa :

    article-1-hello-c-est-moi.html

    Seulement sa plante probleme de regex il crois que chaque tiret est une nouvelle réference...

    Quel regex me faudrait t'il employer svp ?

    Merci

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    1- Avoir trois ".*" dans la même regex, c'est un coup à avoir une regex qui fait n'importe quoi. Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^-]+)-([^-]+)-([^-]+).html$ $1.php?id=$2&news=$3 [L]
    Bien sûr, elle serait encore mieux écrite si tu mettais les types dans les crochets comme [0-9] par exemple. Je ne peux pas le savoir pour toi :/

    2- Ton problème ne se situe pas au niveau du .htaccess comme tu le laisses entendre mais, visiblement, c'est au niveau de la fonction Nstr().

  3. #3
    Membre du Club Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 45
    Points
    45
    Par défaut
    Merci de ta réponse

    Voici la fonction Nstr() :

    function Nstr($txt) {
    $new = ereg_replace("['?!:./, ]", "-", $txt);
    $new= strtr($new,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
    return $new;
    }

    Merci

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Là, je ne vois pas un seul underscore _ ni dans la RewriteRule ni dans la fonction Nstr()... Je ne sais pas d'où vient ton exemple article-1-hello_c_est_moi.html.

    Tu pourrais éventuellement te servir de la fonction clean_url_parameter() qui se trouve dans les archives à télécharger ici (tout à la fin dans le Mod phpBB) :
    http://g-rossolini.developpez.com/tu...url-rewriting/
    Je t'en parle car elle est plus performante que ton Nstr().

    Je t'ai donné tout ce que j'ai pu. À toi de jouer et, si ça ne fonctionne pas, nous aurons besoin de davantage d'informations.

    Bonne chance.

  5. #5
    Membre du Club Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 45
    Points
    45
    Par défaut
    Les underscore cétais avant là la fonction j'ai deja remplacer par des - mais justement sa bug ...

    Je vais tester avec ta fonction merci

  6. #6
    Membre du Club Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 45
    Points
    45
    Par défaut
    Non, je confirme cela ne vient pas de ma fonction !

    Ma fonction transforme bien les espace et caractere speciaux en - !

    Seuelment le probleme vient du regex qui apres pour l'url rewriting considere le - qui remplace les espaces et caractere speciaux par le - du separateur des variables passer par l'url !

    Je veux savoir comment faire pour faire comme : http://www.clubic.com pour leur news par exemple ils on l'id le type de module et le titre de la page qui est envoyer !

    Merci

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Bon...

    Déjà, tu disais avoir un problème d'underscores. Je t'ai répondu à ce sujet alors que tu l'avais sournoisement réglé entre-temps sans prévenir. Pas grave.

    Maintenant, tu ne sembles pas avoir testé l'expression que je te propose alors que je suis à peu près convaincu qu'elle fonctionne.
    Voici une version plus intéressante et plus sécurisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-z]+)-([0-9]+)-([a-z0-9-]+)\.html$ $1.php?id=$2&news=$3 [L]
    Enfin, il y a un sévère problème de sécurité puisque tu proposes à l'utilisateur d'exécuter n'importe quel script de ton serveur... C'est très fortement déconseillé.
    Tu devrais faire une RewriteRule pour chacun des scripts qui en ont besoin. Cela ne coûte pas gnad chose et cela t'évitera une méchante faille de sécurité.

    Rappel : pour répondre à un problème, nous avons besoin du minimum d'infos. Ici, le coup de l'underscore n'était qu'une fourbe diversion

  8. #8
    Membre du Club Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 45
    Points
    45
    Par défaut
    Sournoisement mais non je me suit juste mal exprimé :'(

    Je suis vraiment désolé j'avais zapper le regex que tu avais mis . sa mfonctionne en effet.

    Ensuite je specifis le fichier mais pour le topic je n'allais pas donner tout mon code sa n'aurais fait que grossir le topic pour pas grand chose car j'avais reussi à à peu prêt cibler le problème.

    Merci pour tout.

    Topic Résolu !

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

Discussions similaires

  1. URL rewriting - REGEX
    Par tydoo34 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 07/11/2011, 02h47
  2. url rewriting complexe
    Par IP-Fix dans le forum Apache
    Réponses: 1
    Dernier message: 07/12/2008, 21h06
  3. Aide pour un regex url rewriting
    Par Bouki dans le forum Apache
    Réponses: 2
    Dernier message: 12/11/2008, 10h02
  4. [url rewriting] Regex plus propre ?
    Par seb_perl dans le forum Apache
    Réponses: 1
    Dernier message: 14/12/2005, 16h47
  5. [RegEx] url rewriting - regex
    Par vnk600 dans le forum Langage
    Réponses: 1
    Dernier message: 20/11/2005, 22h42

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