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 :

rewriting url: l'incompétence


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut rewriting url: l'incompétence
    Bonjourà tous,

    Désolé tout d'abord d'arriver ici avec une question de parfait débutant, mais ce n'est pas faute d'avoir cherché une solution un peu partout.
    J'ai joué avec pendant quelques heures, fureté à droite et à gauche mais bon, là.....
    J'ai essayé de faire l'explication la + complète possible de ce qui m'arrive mais dans ces moments de grande solitude, on n'est rarement très méthodique !

    Dans mon htaccess(j'utilise CMSMS) j'ai mis en place le rewriting url sans souci + les filtrages qui vont bien.
    VOICI MON HTACCESS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #Options -Indexes
    RewriteEngine On
    # RewriteBase /
     
    --------------------------MA SYNTAXE DESOLANTE--------------------------------------------
     
     
    RewriteCond %{REQUEST_URI} ^/ensemble/expertise/([0-9]+)/25/([a-z0-9-]+).*$ 
    RewriteRule ^(.*)ensemble/expertise/([0-9]+)/25/([a-z0-9-]+).*$ http://www.monsite.com/index.php?page=groupe-expert&clefville=$1&clefgroupe=25 [L,R=301]
     
     
    ---------------------------------------------------------------------------------------------
     
     
     
    RewriteRule ^formations-informatiques/([0-9]+)/([0-9]+)/([a-z0-9-]+)\.html$ /index.php?page=groupe-expert&clefville=$1&clefgroupe=$2 [QSA]
    RewriteCond %{REQUEST_FILENAME} !-f [NC]
    RewriteCond %{REQUEST_FILENAME} !-d [NC]
    RewriteRule ^(.+)$ index.php?page=$1 [QSA]
     
    # URL Filtering helps stop some hack attempts
    #IF the URI contains a "http:"
    RewriteCond %{QUERY_STRING} http\: [OR]
     
    #OR if the URI contains a "["
    RewriteCond %{QUERY_STRING} \[ [OR]
     
    #OR if the URI contains a "]"
    RewriteCond %{QUERY_STRING} \] [OR]
     
    #OR if the URI contains a "<script>"
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
     
    #OR script trying to set a PHP GLOBALS variable via URL
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
     
    #OR any script trying to modify a _REQUEST variable via URL
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
     
    #IF the URI contains UNION
    RewriteCond %{QUERY_STRING} UNION [OR]
     
    #OR if the URI contains a *
    RewriteCond %{QUERY_STRING} \*
     
    #then deny the request (403)
    RewriteRule ^.*$ - [F,L]
     
    # End URL Filtering
     
    # force le passage a utilisation php5
    SetEnv PHP_VER 5
    SetEnv REGISTER_GLOBALS 0
    # No sense advertising what we are running
    ServerSignature Off
    Dans mon nouveau site(sous cmsms) je passe 2 paramètres à une page sous la forme suivante :


    index.php?page=groupe-expert&clefville=22&clefgroupe=49

    Les url de mon ancien site(développé à la main à l'époque héroique) étaient de la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monsite.com/ensemble/expertise/22/25/nomfichier.html

    La variable clefville reste la même, la table qui gère les villes est identique, par contre les clefgroupe ont changé- ici l'ancien était 49 et il passe à 25 pour l'exemple)
    En clair je rentre le nouvel id "clefgroupe" en dur mais j'essaie de repêcher dans l'url l'id "clefville"

    J'ai donc rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} ^/ensemble/expertise/([0-9]+)/25/([a-z0-9-]+).*$ 
    RewriteRule ^(.*)ensemble/expertise/([0-9]+)/25/([a-z0-9-]+).*$ http://www.monsite.com/index.php?page=groupe-expert&clefville=$1&clefgroupe=25 [L,R=301]
    et voilà ce que j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monsite.com/index.php?page=groupe-expert&clefville=&clefgroupe=25
    En gros, je suis incapable de lui faire récupérer la première variable (clefville) contenue dans l'url pour lui faire réécrire cette variable dans mon Rewrite Rule.
    Merci à tous pour votre aide

  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
    Par défaut
    C'est normal : le premier groupe entre parenthèses du premier membre de la RewriteRule est (.*), donc $1 ne vaut jamais rien car la RewriteCond qui précède cette règle fait en sorte que l'URL commence toujours par ensemble/expertise.

    Donc soit tu utilises $2 et $3 respectivement à la place de $1 et $2, soit tu retires les parenthèses (.*) qui ne servent strictement à rien.

    Au passage, ta condition ne sert à rien car ce qu'elle vérifie est vérifié de la même façon par ton filtre de RewriteRule. Donc retire aussi la RewriteCond qui ne sert à rien.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut Résolu
    Merci mille fois! Cela fonctionne ! Cela m'enlève une bonne épine du pied. C'est tellement évident, j'ai honte... J'ai repris l'expression en l'adaptant et je n'ai pas repéré que le premier groupe entre parenthèses était identifié comme première variable.
    Petite question de vrai débutant: d'un point de vue structure du coup dans quel cas utilise-t-on "RewriteCond" en plus du filtre dans RewriteRule puisque la syntaxe (lorsqu'on la connaît....) permet de faire des filtres assez complexes uniquement avec la RewriteRule ? Dernière question enfin, j'en profite, existe-t-il un vrai bon bouquin sur le paramétrage des htaccess. Sur le web j'ai trouvé quelques ressources mais souvent lacunaires et incomplètes.
    Vraiment merci, là vous me sauvez la mise !

  4. #4
    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
    Par défaut
    Citation Envoyé par padoberg Voir le message
    d'un point de vue structure du coup dans quel cas utilise-t-on "RewriteCond" en plus du filtre dans RewriteRule puisque la syntaxe (lorsqu'on la connaît....) permet de faire des filtres assez complexes uniquement avec la RewriteRule ?
    Ben lorsqu'on ne peut pas se contenter du filtre de RewriteRule, comme par exemple lorqu'on veut vérifier aussi un paramètre d'URL, le nom d'hôte, si on est en HTTPS ou pas, etc.

    Citation Envoyé par padoberg Voir le message
    Dernière question enfin, j'en profite, existe-t-il un vrai bon bouquin sur le paramétrage des htaccess.
    Aucune idée

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

Discussions similaires

  1. rewriting url ou simple redirection
    Par adm_windoz dans le forum Apache
    Réponses: 1
    Dernier message: 07/11/2008, 07h34
  2. Rewrite URL avec 2 sites en parallèle
    Par gigraphe dans le forum Apache
    Réponses: 2
    Dernier message: 22/09/2008, 11h41
  3. Réponses: 4
    Dernier message: 23/05/2008, 12h58
  4. Hosteur.com Rewriting url
    Par gerald22mars dans le forum Hébergement
    Réponses: 0
    Dernier message: 27/10/2007, 01h11
  5. [URL Rewriting] URL non interprétées
    Par Mister Nono dans le forum Apache
    Réponses: 1
    Dernier message: 09/08/2007, 18h27

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