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] Rediriger un sous-domaine quand le répertoire n'existe pas


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut [URL rewriting] Rediriger un sous-domaine quand le répertoire n'existe pas
    Salut tous le monde !

    J'ai ce code qui redirige le sous domaine que l'on tape avant le domaine vers un répertoire du site portant ce nom :
    http://ABRUTIS.domaine.com ---> http://domaine.com/ABRUTIS/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Fichier Htaccess à la racine du site :
     
    <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    Options +Indexes
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !wwww.le-domaine.com$ [NC]
    RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]-+).le-domaine.com [NC]
    RewriteRule (.*) %2/%1 [L]
    </IfModule>
    Maintenant mon problème est que là le répertoire Abrutis existe dans la racine de mon site, donc le sous domaine est correctement redirigé, mais ce que je voudrais c'est que quand le répertoire n'existe pas, que l'adresse soit redirigée vers la racine de mon site :
    http://ABRUTISSSSSSS.domaine.com : le répertoire n'existe pas, donc : http://domaine.com

    Mais comment faire ? Je dois surement rajouter une condition :s
    Merci d'avance à ceux qui m'aideront.

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu peux ajouter ces lignes à la fin de ta conf RewriteXxx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteCond %{HTTP_HOST} !wwww.le-domaine.com$ [NC]
    RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]-+).le-domaine.com [NC]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) http://domaine.com/ [R]

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut
    En rajoutant ces lignes cela fonctionne, par contre je précise qu'il faut dans le code donné en haut de la page qu'il faut viréer le "-" et aussi supprimer le [L] qui déclare que la Rule est la Rule finale, or après on y ajoute des conditions et rules donc il faut virer le [L]

    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    Options +Indexes
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !wwww.le-domaine.com$ [NC]
    RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).le-domaine.com [NC]
    RewriteRule (.*) %2/%1
    RewriteCond %{HTTP_HOST} !wwww.le-domaine.com$ [NC]
    RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).le-domaine.com [NC]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) http://domaine.com/ [R]
    </IfModule>
    Merci _Mac_

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut
    Bon bon bon, les problèmes se suivent mais ne se ressembles pas xD

    Après que tout fonctionne quand je tape aaa.domaine.com cela me renvoi bien vers domaine.com/aaa et je peut voir l'arborescence du dossier

    Par contre je viens de m'apercevoir que si je tente d'accéder à un fichier, je ne parviens pas à y accéder, si je clique dessus je reviens instantanément à la même page.

    Savez-vous pourquoi ?

    (_Mac_ je t'ai envoyé le lien vers mon site, pour que tu vois de quoi je parle, enfin si ça t'embête pas que je t'enkikine encore une fois ^^)

  5. #5
    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
    Points : 12 977
    Points
    12 977
    Par défaut
    A priori, c'est la règle qui n'est pas bonne car tu éludes totalement l'URL, tu ne réécris que par rapport au domaine. Mets ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule (.*) %2/%1/$1

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut
    En changeant cette règle, à priori ça me renvoi carrément à la racine de mon site cette fois ci. Bizarre.

    Mais je vais quand même voir si je peut pas changeant quelque chose en trifouillant le code.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut
    Ah non je n'ai rien dit, ce qui me renvoi vers mon site est la suite du code (celle qui renvoi les sous domaines où le dossier n'existe pas vers la racine du site).

    Donc si j'enlève la code de la fin, je tombe sur une erreur 500.

  8. #8
    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
    Points : 12 977
    Points
    12 977
    Par défaut
    Remets le [L], pour voir ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut
    Alors j'ai donc essayé simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    Options +Indexes
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !wwww.x-domaine.com$ [NC]
    RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).x-domaine.com [NC]
    RewriteRule (.*) %2/%1/$1
    </IfModule>
    Et ça ne fonctionne pas, en mettant le [L] ou pas (ce qui reviens au même il me semble comme j'ai viré la fin du code. Et j'obtiens donc une erreur 500.
    Je précise que le fichier VirtualHosts est vide (pour ce test) et que mon fichier Htaccess à la racine du site ne comporte que ce code (pour ce test).

    C'est bizarre non ?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut
    Voici ce que me dit le log d'erreur d'Apache en ayant mis le "LogLevel" sur "debug" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [Fri Nov 06 13:24:21 2009] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3063): [client 127.0.0.1] r->uri = /aaa//aaa/aaa/aaa/aaa/aaa/aaa/aaa/aaa/aaa/
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /aaa//aaa/aaa/aaa/aaa/aaa/aaa/aaa/aaa/
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /aaa//aaa/aaa/aaa/aaa/aaa/aaa/aaa/
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /aaa//aaa/aaa/aaa/aaa/aaa/aaa/
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /aaa//aaa/aaa/aaa/aaa/aaa/
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /aaa//aaa/aaa/aaa/aaa/
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /aaa//aaa/aaa/aaa/
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /aaa//aaa/aaa/
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /aaa//aaa/
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /aaa//
    [Fri Nov 06 13:24:21 2009] [debug] core.c(3069): [client 127.0.0.1] redirected from r->uri = /
    J'obtiens cette erreur quand je vais dans : "aaa.x-domaine.com"

  11. #11
    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
    Points : 12 977
    Points
    12 977
    Par défaut
    Oui, effectivement, c'est évident : les (.*) du RewriteRule est trop global et génère une boucle infinie. Il faut ajouter une condition pour bloquer la réécriture dans le cas où l'URL contient le 3ème élément du nom mais avec les %1 et %2 que tu utilises, je ne sais pas trop comment faire. Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    Options +Indexes
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !wwww.x-domaine.com$ [NC]
    RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).x-domaine.com [NC]
    RewriteCond %{REQUEST_URI} !^%2/%1
    RewriteRule (.*) %2/%1/$1
    </IfModule>

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut
    Et non, fonctionne pas ^^
    Pourtant je vire bien tous mes VirtualHosts et le reste des codes HTAccess pour éviter tout conflit mais nan.

    S'il te reste une ptite idée vas y sinon laisse tombé _Mac_, tu m'as déjà bien aidé

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/10/2013, 18h08
  2. Réponses: 5
    Dernier message: 13/12/2012, 13h21
  3. Réponses: 4
    Dernier message: 24/08/2009, 13h56
  4. Réponses: 5
    Dernier message: 05/03/2009, 14h09
  5. [URL Rewriting] problème avec sous domaine
    Par Booyakha dans le forum Apache
    Réponses: 1
    Dernier message: 31/07/2007, 17h31

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