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] sous-domaine, dossier, uri, en variables


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut [url rewriting] sous-domaine, dossier, uri, en variables
    Bonjour,

    Je me casse les dents sur la config suivante :

    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
    RewriteEngine on
     
    RewriteCond %{HTTP_HOST} !^www.domaine.tl
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]+).domaine.tl 
    RewriteRule ^([0-9a-zA-Z-]+)/index.php?([^.]+)$  /sortie/index.php?sous_domaine=%1&dossier=$1&$2 [L]
     
    RewriteCond %{HTTP_HOST} !^www.domaine.tl
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]+).domaine.tl 
    RewriteRule ^([0-9a-zA-Z-]+)/$ /sortie/index.php?sous_domaine=%1&dossier=$1 [L]
     
    RewriteCond %{HTTP_HOST} !^www.domaine.tl
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]+).domaine.tl 
    RewriteRule ^index.php?([^.]+)$ /sortie/index.php?sous_domaine=%1&dossier=none&$1 [L]
     
    RewriteCond %{HTTP_HOST} !^www.domaine.tl
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]+).domaine.tl 
    RewriteRule ^$ /sortie/index.php?sous_domaine=%1&dossier=none [L]
    Objectifs :
    1. http://toto.domaine.tl => http://www.domaine.tl/sortie/index.p...o&dossier=none
    2. http://toto.domaine.tl/index.php?var1=XXXX&var2=XXXXX => http://www.domaine.tl/sortie/index.p...XXX&var2=XXXXX
    3. http://toto.domaine.tl/titi/ => http://www.domaine.tl/sortie/index.p...o&dossier=titi
    4. http://toto.domaine.tl/titi/index.ph...XXX&var2=XXXXX => http://www.domaine.tl/sortie/index.p...XXX&var2=XXXXX


    Le tout sans changer les URLs relatives à www.domaine.tl

    Résultats :
    1. http://toto.domaine.tl/ => /sortie/index.php?sous_domaine=toto&dossier=none : OK
    2. http://toto.domaine.tl/index.php?var1=toto => /sortie/index.php?sous_domaine=toto&dossier=none&n'importe quoi : KO
    3. http://toto.domaine.tl/titi/ => /sortie/index.php?sous_domaine=toto&dossier=titi : OK
    4. http://toto.domaine.tl/titi/index.php?var1=toto => /sortie/index.php?sous_domaine=toto&dossier=titi&n'importe quoi : KO


    Si un spécialiste pouvait m'ouvrir les yeux, je le remercie d'avance.

  2. #2
    Membre expérimenté

    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
    Par défaut
    Les paramètres passés au niveau de l'URL (query string) ne se testent pas ainsi : une règle RewriteRule ne porte uniquement sur le chemin de la ressource. Pour tout le reste, il faut utiliser une condition RewriteCond, comme cela a été fait pour le nom du serveur. Toutefois, l'idée, par rapport à vos règles, étant, semble-t-il, de les retransmettre, il suffit simplement pour cela d'ajouter l'option QSA à la règle (Query String Append). Inutile de chercher à complexifier davantage.

    J'aurais corrigé/factorisé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    RewriteEngine on
     
    RewriteCond %{QUERY_STRING} !(?:^|&)sous_domaine=[^&]+
    RewriteCond %{QUERY_STRING} !(?:^|&)dossier=[^&]+
    RewriteCond %{HTTP_HOST} !=www.domaine.tl
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]+)\.domaine\.tl
    RewriteRule ^([0-9a-zA-Z-]+)/(?:index.php)?$ /sortie/index.php?sous_domaine=%1&dossier=$1 [L,QSA]
     
    #RewriteCond %{QUERY_STRING} !(?:^|&)sous_domaine=[^&]+
    #RewriteCond %{QUERY_STRING} !(?:^|&)dossier=[^&]+
    RewriteCond %{HTTP_HOST} !=www.domaine.tl
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]+)\.domaine\.tl
    RewriteRule ^(?:index.php)?$ /sortie/index.php?sous_domaine=%1&dossier=none [L,QSA]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut Je teste
    Merci pour la réponse rapide.

    Je viens de tester et j'ai une erreur 500.

    Je regarde d'où viens l'erreur.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut Ce n'est pas un simple passge de variables
    Url d'appel :
    http://toto.domaine.tl/rep/
    devrait devenir
    http://www.domaine.tl/sortie/index.php?sous_domaine=toto&dossier=rep

    http://toto.domaine.tl/index.php?var=toto&...
    devrait devenir
    http://www.domaine.tl/sortie/index.php?sous_domaine=toto&var=toto&...

    Or l'exemple permet le passage de variable dans la réécriture.

  5. #5
    Membre expérimenté

    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
    Par défaut
    En effet, pour obtenir une "redirection de domaine", vos règles ne peuvent rester relatives : il faut préfixer les différents chemins de redirection de http://www.domaine.tl/

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut Avancement significatif
    Cette partie là fonctionne :

    RewriteCond %{QUERY_STRING} var1=(.+) [OR]
    RewriteCond %{QUERY_STRING} var2=(.+) [OR]
    RewriteCond %{HTTP_HOST} !^www.domaine.tl
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]+).domaine.tl
    RewriteRule ^index.php?(.+)$ /autre-test/index.php?sous_domaine=%1&dossier=none&rq=index.php [L,QSA]
    RewriteRule ^([^/]+)$ /autre-test/index.php?sous_domaine=%1&dossier=none&rq=$1 [L,QSA]

    Part contre dès que je mets cette partie (pour les dossier) j'ai une erreur 500 :
    RewriteCond %{QUERY_STRING} var1=(.+) [OR]
    RewriteCond %{QUERY_STRING} var2=(.+) [OR]
    RewriteCond %{HTTP_HOST} !^www.
    domaine.tl
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]+).
    domaine.tl
    RewriteRule ^([0-9a-zA-Z-]+)/index.php?(.+)$ /autre-test/index.php?sous_domaine=%1&dossier=$1&rq=index.php [L,QSA]
    RewriteRule ^([0-9a-zA-Z-]+)/([^/]+)$ /autre-test/index.php?sous_domaine=%1&dossier=$1&rq=$1 [L,QSA]



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

Discussions similaires

  1. [URL rewriting] Sous-domaine et multi-variables
    Par guillaumeIOB dans le forum Apache
    Réponses: 1
    Dernier message: 22/10/2012, 23h15
  2. [URL rewriting] Sous-domaine et variables d'URL
    Par cozy_cookie dans le forum Apache
    Réponses: 5
    Dernier message: 08/07/2010, 10h20
  3. Réponses: 2
    Dernier message: 16/04/2008, 15h27
  4. [URL REWRITING] Sous Domaine + Variables
    Par Early Reflexions dans le forum Apache
    Réponses: 3
    Dernier message: 28/12/2007, 01h58
  5. Réponses: 1
    Dernier message: 06/12/2007, 17h13

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