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 :

Redirection d'un sous domaine vers une page


Sujet :

Apache

  1. #1
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut Redirection d'un sous domaine vers une page
    Bonjour,

    Je souhaite pouvoir rediriger un sous domaine vers une page spécifique de mon site web mais je ne peux rediriger que vers la racine d'un dossier.

    J'ai ceci actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <VirtualHost *:80>
            ServerName publier-une-annonce-immobiliere.exposehome.com
            ServerAlias publier-une-annonce-immobiliere.exposehome.fr
            DocumentRoot "/var/www/exposehome"
    </VirtualHost>
    Comment faire pointé ce sous domaine vers page.php?action=1
    J'ai cherché dans google mais j'ai rien trouvé de concluant ?

    Pouvez vous m'aidez un petit coup ?

    Bonne journée

  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
    Absolument tout le sous-domaine ? Si oui, ajoute ceci dans ta conf de VH :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule .* page.php?action=1 [L]
    Vérifie avant que mod_rewrite est activé.

  3. #3
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Coucou,

    Merci de ta réponse. Au lieu de le mettre dans le VH puis-je le mettre dans le .htaccess ?

    Dans mon .htaccess il y a déjà plusieurs règles de réécriture alors jemet ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule demo.* page.php?action=1 [L]
    Donc si je te suis, je tape :
    demo.exposehome.fr sa ira dans page.php?action=1 ?

    C'est bien sa ?
    Mon objectif étant à terme de faire des sous domaines dynamique grâce aux règles d'écriture.

    PS: Je viens de tester cela n'a pas l'air de marcher...
    Mon domaine dans bind est configuré comme ceci :
    * A X.X.X.X
    Ce qui à pour effet de pointé à la racine du serveur ce qui est correct non?

    Je confirme que la réécriture ne marche pas que ce soir dans le virtual host ou dans le .htaccess. J'ai fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <VirtualHost *:80>
            RewriteEngine on
            RewriteRule demo.* page.php?action=1 [L]
    </VirtualHost>

    Question subsidiaire :
    J'ai écris ceci comme règle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([0-9]+)-[a-zA-Z\-0-9]+\.htm$ page.php?action=15&idAnn=$1 [L]
    Quand je clique sur ce lien :
    http://127.0.0.1/exposeHome/11-A-LOU...tes-Centre.htm
    cela marche mais quand je tape :
    http://127.0.0.1/exposeHome/5-A-VEND...ndissement.htm

    Cela ne fonctionnement plus ?
    Est-ce à cause des espaces ?

    Bonne nuit à tous

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par akrogames Voir le message
    Donc si je te suis, je tape :
    demo.exposehome.fr sa ira dans page.php?action=1 ?

    C'est bien sa ?
    Ce n'est pas aussi simple : demo.exposehome.fr n'apparaît pas dans ce qu'un RewriteRule teste par défaut (par défaut RewriteRule ne travaille que sur le chemin des URL). Il faut que tu utilises la règle que j'ai donnée mais avec une condition au préalable sur ce que le RewriteRule ne peut pas tester : le domaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{HTTP_HOST} ^demo\.exposehome\.fr$
    RewriteRule .* page.php?action=1 [L]
    Citation Envoyé par akrogames Voir le message
    Mon domaine dans bind est configuré comme ceci :
    * A X.X.X.X
    Ce qui à pour effet de pointé à la racine du serveur ce qui est correct non?
    Aucune idée

    Citation Envoyé par akrogames Voir le message
    Je confirme que la réécriture ne marche pas que ce soir dans le virtual host ou dans le .htaccess.
    Je répète que c'est parce que le RewriteRule ne travaille pas par défaut sur le nom (de domaine) mais uniquement sur le chemin des URL.

    Citation Envoyé par akrogames Voir le message
    Question subsidiaire : ...
    Est-ce à cause des espaces ?
    A priori oui et du "è"

  5. #5
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Tu as raison !

    Je suis tête de mule des fois

    Ceci marche correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{HTTP_HOST} ^demo\.exposehome\.fr$
    RewriteRule .* http://page.php?action=1 [L]
    Maintenant j'ai deux questions.
    Quand je tape demo.exposehome.fr je suis redirigé vers http://page.php?action=1 et l'url qui s'affiche c'est bien http://page.php?action=1. Logique mais pour le référencement j'aurais besoin que l'url affiché soit demo.exposehome.fr

    Et j'essaye d'écrire la ligne suivante pour redirigé mon faux sous domaine vers la bonne page :
    quand on clic sur l'url suivante : http://8-annonce.exposehome.fr que je puisse être redirigé vers page.php?action=1&annonce=8

    J'ai écris sa mais sa ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteCond %{HTTP_HOST} ^*\.exposehome\.fr$
    RewriteRule ([0-9]+).* http://exposehome.fr/page.php?action=1&annonce=$1 [L]

    Tu peux m'aider encore un peu ?

    merci à toi en tous cas

  6. #6
    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
    Citation Envoyé par akrogames Voir le message
    Logique mais pour le référencement j'aurais besoin que l'url affiché soit demo.exposehome.fr
    Il faut faire comme j'ai marqué : ne pas mettre le http:// dans le second membre du RewriteRule. On peut quand même mettre un / devant page.php pour être sûr qu'Apache aille chercher la page page.php qui se trouve à la racine du site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{HTTP_HOST} ^demo\.exposehome\.fr$
    RewriteRule .* /page.php?action=1 [L]
    Citation Envoyé par akrogames Voir le message
    Tu peux m'aider encore un peu ?
    Toujours pareil : RewriteRule ne travaille pas a priori sur le domaine, seulement le chemin, donc ton ([0-9]+) dans ton jeu de règle ne matche pas le 8 du hostname. Il faut aller ce chercher chiffre avec le RewriteCond et le référencer avec %1 ($1 matche le premier groupe de parenthèses du premier membre du RewriteRule, %1 celui du RewriteCond) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{HTTP_HOST} ^([0-9]+)-annonce\.exposehome\.fr$
    RewriteRule .* http://exposehome.fr/page.php?action=1&annonce=%1 [L]
    Et pareil, si tu ne veux pas que le navigateur affiche http://exposehome.fr/page.php?action=1&annonce=8, il faut retirer http://exposehome.fr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{HTTP_HOST} ^([0-9]+)-annonce\.exposehome\.fr$
    RewriteRule .* /page.php?action=1&annonce=%1 [L]

  7. #7
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Erf... Je souhaiterais ne plus te faire perdre ton temps mais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{HTTP_HOST} ^([0-9]+)-annonce\.exposehome\.fr$
    RewriteRule .* /page.php?action=1&annonce=%1 [L]
    Me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Internal Server Error
     
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    Il n'aime pas le / au début de page.php
    RewriteRule .* /page.php?action=1&annonce=%1 [L]

    Merci en tous cas de m'avoir appris les conditions

  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
    Ah oui, ça part en boucle infinie vu qu'on ne change pas de hostname par redirection du navigateur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{QUERY_STRING} !internal_redirect
    RewriteCond %{HTTP_HOST} ^([0-9]+)-annonce\.exposehome\.fr$
    RewriteRule .* /page.php?internal_redirect=true&action=1&annonce=%1 [L]

  9. #9
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Dernière question après je ne t'embête plus.

    Quand je tape ceci :
    http://8-annonce.exposehome.fr/
    ou
    http://8-appartement-3piece-bordeaux.exposehome.fr/

    J'ai ré écris ta règle comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{QUERY_STRING} !internal_redirect
    RewriteCond %{HTTP_HOST} ^([0-9]+)-[a-zA-Z\-0-9]+\.exposehome\.fr$
    RewriteRule .* /page.php?internal_redirect=true&action=1&annonce=%1 [L]
    Le serveur arrive bien dans ma page.php?action=1 mais il n'arrive plus à résoudre les liens relatif sur le site web... Cela fait que je n'aiplus de css ni d'image...

    Ce qui est étrange c'est quand je tape :
    http://8-annonce.exposehome.fr/
    Il m'affiche les css sauf quelques images qui normalement s'affiche...

    Encore un petit coup de pouce s'il te plait après je te dérange plus.

  10. #10
    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
    C'est normal : la règle redirige absolument tout sur page.php, y compris les demandes concernant les images et les CSS. Il faut ajouter des exceptions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteCond %{QUERY_STRING} !\.(css|jpg|gif)$
    RewriteCond %{QUERY_STRING} !internal_redirect
    RewriteCond %{HTTP_HOST} ^([0-9]+)-[a-zA-Z\-0-9]+\.exposehome\.fr$
    RewriteRule .* /page.php?internal_redirect=true&action=1&annonce=%1 [L]
    Je ne suis pas hyper sûr de ma règle, je n'en écris jamais des comme ça.

  11. #11
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Re,

    Cela ne fonctionne toujours pas C'est super compliqué pour faire ce que je veux en fait... Tu peux me filé encore un petit coup de main?

    Désolé de pas réfléchir par moi même mais je suis un peu largué...

    Bonne soirée

  12. #12
    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
    Je suis fatigué : c'est pas la query string qu'il faut vérifier mais la request URI :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteCond %{REQUEST_URI} !\.(css|jpg|gif)$
    RewriteCond %{QUERY_STRING} !internal_redirect
    RewriteCond %{HTTP_HOST} ^([0-9]+)-[a-zA-Z\-0-9]+\.exposehome\.fr$
    RewriteRule .* /page.php?internal_redirect=true&action=1&annonce=%1 [L]

  13. #13
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Oui en effet cela fonctionne à peu près correctement...

    Je ne pourrais malheureusement pas l'utiliser... Mon site utiliserles technologies AJAX et apparemment quand je fais une requête asynchrone cela rouvre une nouvel page dans ma page

    Existe-il une autre solution pour régler mon problème si non j'abandonne...

    Bonne soirée et merci de ton aide

  14. #14
    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
    Peut-être qu'il suffit de compléter la liste des extensions, voire ajouter un ou plusieurs RewriteCond supplémentaires. Sinon, non, pas d'autres solutions à ma connaissance s'il s'agit de tout rediriger comme ça sur une unique page

Discussions similaires

  1. Redirigez un nom de domaine vers une page en gardant l'url
    Par camcam8782 dans le forum Langage
    Réponses: 0
    Dernier message: 17/03/2011, 13h25
  2. Réponses: 1
    Dernier message: 30/06/2010, 16h58
  3. Réponses: 1
    Dernier message: 28/12/2007, 21h43
  4. Réponses: 1
    Dernier message: 10/11/2007, 12h12
  5. Réponses: 2
    Dernier message: 09/05/2006, 15h52

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