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] Réécriture sur entête HTTP


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 57
    Points : 46
    Points
    46
    Par défaut [URL Rewriting] Réécriture sur entête HTTP
    Bonjour à tous,

    Je voudrais savoir si ce que je veux faire est possible avec mod_rewrite, et si oui, éventuellement comment .

    Je voudrais re-écrire une url en intercalant un niveau de répertoire supplémentaire dont la valeur serait issue d'un entête HTTP (de la request HTTP).

    Ex : supposons qu'une variable d'entête HTTP soit USER_ID et qu'elle soit égale pour la request donnée à 123456789

    L'URL envoyée http://monsite.fr:80/MonAppli/MonRepertoire/toto.html serait dont traduite en :

    http://monsite.fr:80/MonAppli/MonRepertoire/123456789/toto.html

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Qu'appelez-vous "variable d'entête" ? En utilisant %{HTTP:X} où X est le nom de l'entête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule /MonAppli/MonRepertoire/toto.html /MonAppli/MonRepertoire/%{HTTP:USER_ID}/toto.html
    ?

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Oui exactement.

    Mais peut-on utiliser %{HTTP:X} dans une directive RewriteRule ?

    En lisant la doc (http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html), j'avais peur que ce ne soit possible que dans une directive RewriteCond.

    Si on peut, mon pb est résolu.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Vous n'avez pas essayé ? Je pense que oui, comme les autres variables, sinon au pire, on peut utiliser une capture sur une règle RewriteCond

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    J'essaierai lundi. C'est une idée qui m'est venue aujourd'hui et je voulais "anticiper".

    Encore merci.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Soit l'arborescence suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /
        index.php
        .htacess
        123456789/
            index.php
    /index.php :
    /123456789/index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $dirs = preg_split('~[/\\\]~', dirname(__FILE__));
    echo array_pop($dirs);
    /.htaccess (renvoi sur le sous-répertoire correspondant à la valeur de l'entête USER_ID) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
    # Si défini ...
    RewriteCond %{HTTP:USER_ID} !^$
    RewriteRule ^([^/]+)$ %{HTTP:USER_ID}/$1
    Et le client suivant, qui définit cet entête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $ch = curl_init('http://localhost/index.php');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('USER_ID: 123456789'));
    curl_exec($ch);
    curl_close($ch);
    Résultat :
    [julp@freebsd6 ~]$ php -f curl.php
    123456789
    Sans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $ch = curl_init('http://localhost/index.php');
    curl_exec($ch);
    curl_close($ch);
    Résultat :
    [julp@freebsd6 ~]$ php -f curl.php
    /

Discussions similaires

  1. [URL Rewriting] RewriteCond sur entête user agent
    Par latouche dans le forum Apache
    Réponses: 1
    Dernier message: 28/05/2008, 19h08
  2. Réponses: 7
    Dernier message: 19/03/2008, 16h07
  3. [URL Rewriting] Infos sur l'URL Rewriting
    Par Thomad dans le forum Apache
    Réponses: 2
    Dernier message: 16/09/2007, 00h13
  4. [URL Rewriting] problème sur une règle
    Par Mike91 dans le forum Apache
    Réponses: 1
    Dernier message: 13/09/2007, 16h20
  5. [URL Rewriting] Réécriture et espaces
    Par iwf-fr dans le forum Apache
    Réponses: 5
    Dernier message: 02/09/2007, 14h33

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