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 et nom de domaine ?


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut Url rewriting et nom de domaine ?
    Bonjour

    Je possède un serveur privé debian préconfiguré.

    Actuellement j'ai des URL de type : www.site.fr/client/dossier/ grâce un .htaccess qui contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteRule ^([0-9]+)/([0-9]+)/ page.php?var1=$1&var2=$2 [L]
    RewriteRule ^([0-9]+)/ page.php?var1=$1 [L]
    Je voudrais pouvoir rediriger www.client.fr vers www.site.fr/client/ de sorte que www.client.fr/dossier/ pointe en faite vers www.site.fr/client/dossier/

    (je possède les noms de domaines pour chaque client, ils pointent sur ce même serveur)

    Actuellement je n'ai pu faire qu'une redirection par frame transparente de facon temporaire,
    j'ai aussi réussi à faire en sorte que www.client.fr pointe au meme endroit que site.fr en ajoutant client.fr en tant qu'alias,
    malheuresement ce n'est pas ce que je cherche.

    J'ai la main sur toute la configuration du serveur, je peux donc montrer et modifier tous les fichiers de configurations.

    Merci

  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 veux faire une redirection côté client (et faire en sorte que la barre d'URL change) ou faire une redirection transparente ?

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    je ne voudrais que l'url visible dans la barre d'adresse du navigateur soit www.client.fr/dossier/

    je ne veux pas d'une redirection de client.fr vers www.site.fr/client/, ni d'une redirection transparente par frame

    j'ai déjà vu que c'était possible sur le site d'un concurrent

  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
    OK, alors dans ce cas, il faut soit faire ce que tu fais (i.e. faire pointer les différents document roots sur celui de www.site.fr en configurant des ServerAlias par exemple, soit en configurant un VH par site et en indiquant le document root de www.site.fr avec la directive DocumentRoot), soit configurer un VH par site client et configurer mod_proxy dans ce VH pour qu'il renvoie les requêtes sur www.site.fr. La deuxième solution n'est pas terrible, je trouve.

    Sinon, il pourrait y avoir une troisième solution avec des Alias dans les différents VH des sites client, mais à condition que /dossier soit bien précis, histoire d'éviter de configurer 36000 alias et redémarrer Apache en permanence.

    Y a peut-être d'autres solutions mais elles ne me viennent pas en tête.

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    étant débutant dans la configuration serveur, est-il possible d'avoir un exemple ? ou un lien vers une documentation sur une des solutions
    merci

  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
    Est-ce que, dans la configuration d'Apache, tu as un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    NameVirtualHost ...
     
    <VirtualHost ...>
        ...
        ServerName www.site.fr
        ...
    </VirtualHost>
    Si oui, pourrais-tu nous donner cet extrait de ta configuration (en masquant les noms et les IP éventuelles, bien entendu).

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    voila le fichier de configuration d'apache que j'ai pour ce domaine

    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
     
    <VirtualHost XXX.XXX.XXX.XXX:80>
    	ServerName   site.fr:80
    	ServerAlias  www.site.fr
    	UseCanonicalName Off
    	DocumentRoot /var/www/vhosts/site.fr/httpdocs
    	CustomLog  /var/www/vhosts/site.fr/statistics/logs/access_log plesklog
    	ErrorLog  /var/www/vhosts/site.fr/statistics/logs/error_log
    <IfModule mod_userdir.c>
    	UserDir /var/www/vhosts/site.fr/web_users
    </IfModule>
    	<IfModule mod_ssl.c>
    		SSLEngine off
    	</IfModule>
    	<Directory /var/www/vhosts/site.fr/httpdocs>
    	<IfModule mod_php4.c>
    		php_admin_flag engine on
    		php_admin_flag safe_mode off
    		php_admin_value open_basedir "/var/www/vhosts/site.fr/httpdocs:/tmp"
    	</IfModule>
    	<IfModule mod_php5.c>
    		php_admin_flag engine on
    		php_admin_flag safe_mode off
    		php_admin_value open_basedir "/var/www/vhosts/site.fr/httpdocs:/tmp"
    	</IfModule>
    		Options -Includes -ExecCGI
    	</Directory>
    	<Directory /var/www/vhosts/site.fr/web_users>
    	<IfModule mod_php4.c>
    		php_admin_flag engine off
    	</IfModule>
    	<IfModule mod_php5.c>
    		php_admin_flag engine off
    	</IfModule>
    	</Directory>
    </VirtualHost>

    actuellement les domaines des clients sont sur /var/www/vhosts/client.fr/httpdocs qui ne possede qu'une page html de redirection par frame

    si je passe le nom de domaine client.fr en tant qu'alias de site.fr j'ai les lignes suivantes en plus (mais à ce moment client.fr redirige vers la page d'accueil de site.fr ce qui n'est pas du tout voulu !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ServerAlias client.fr
    ServerAlias www.client.fr

  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
    OK. Y a-t-il un NameVirtualHost XXX.XXX.XXX.XXX:80 quelque part ? S'il n'y en a pas, faut en mettre un juste avant le VH que tu viens de nous montrer.

    Pour tes sites clients, c'est pas bien compliqué : tu fais un copier-coller du bloc <VirtualHost> que tu viens de donner. Dans le bloc que tu viens de copier, tu mets ServerName client.fr puis tu ajoutes ServerAlias www.client.fr, et enfin, tu modifies la directive DocumentRoot pour pointer sur le répertoire d'accueil que tu veux pour ton client. Modifie les <Directory> pour mettre également ce répertoire.

    Pour résumer, en rouge ce qui doit être changé dans ce que tu copies :
    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
    <VirtualHost XXX.XXX.XXX.XXX:80>
    	ServerName   client.fr:80
    	ServerAlias  www.client.fr
    	UseCanonicalName Off
    	DocumentRoot /var/www/...
    	CustomLog  /var/www/.../statistics/logs/access_log plesklog
    	ErrorLog  /var/www/.../statistics/logs/error_log
    <IfModule mod_userdir.c>
    	UserDir /var/www/.../web_users
    </IfModule>
    	<IfModule mod_ssl.c>
    		SSLEngine off
    	</IfModule>
    	<Directory /var/www/...>
    	<IfModule mod_php4.c>
    		php_admin_flag engine on
    		php_admin_flag safe_mode off
    		php_admin_value open_basedir "/var/www/...:/tmp"
    	</IfModule>
    	<IfModule mod_php5.c>
    		php_admin_flag engine on
    		php_admin_flag safe_mode off
    		php_admin_value open_basedir "/var/www/...:/tmp"
    	</IfModule>
    		Options -Includes -ExecCGI
    	</Directory>
    	<Directory /var/www/.../web_users>
    	<IfModule mod_php4.c>
    		php_admin_flag engine off
    	</IfModule>
    	<IfModule mod_php5.c>
    		php_admin_flag engine off
    	</IfModule>
    	</Directory>
    </VirtualHost>
    A toi d'adapter pour constuire la vraie version, je n'ai pas toutes les infos, surtout en ce qui concerne le userdir.

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    j'ai essayé mais cela ne marche pas

    je pense que comme le dossier n'existe pas vraiment cela ne marche pas

    voila ce que j'ai mis en documentroot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DocumentRoot /var/www/vhosts/site.fr/httpdocs/clients.php?client=1165731245
    et je ne pense pas que meme cette ligne marchera, car clients.php?client=1165731245
    redirige vers le dossier par défaut :
    clients.php?client=1165731245&dossier=26987120243

  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
    Non, on ne peut pas mettre ce genre de chose dans DocumentRoot : DocumentRoot est nécessairement un répertoire.

    Dans ce cas, mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DocumentRoot /var/www/vhosts/site.fr/httpdocs
    Ensuite, il faut que tu réécrives les URL vers cet index.php, donc ajoute ceci en dessous de DocumentRoot ainsi que tes 2 RewriteRule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule ^$ /clients.php?client=1165731245 [L]
    Mais ça peut très bien ne pas marcher comme tu le souhaites, tu n'est pas très clair sur cette histoire de clients.php : au départ tu parlais de répertoire www.client.fr/dossier/ à mapper sur www.site.fr/client/dossier/, et maintenant tu parles de clients.php... Dans quel cas faire quoi, c'est pas clair du tout pour moi.

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    je vais esssayer d'expliquer plus clairement car c'est un peu compliqué


    le site principal de la société est www.site.fr,

    toutes les informations clients sont stockés dans une base de donnée que récupère php

    le but de site.fr est de permettre de stocker des informations à des clients,

    pour l'affichage des pages clients, il y a une page qui s'appelle de 2 façons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    www.site.fr/clients.php?client=X (redirige vers le dossier Y par défaut, donc vers www.site.fr/clients.php?client=X&dossier=Y)
    www.site.fr/clients.php?client=X&dossier=Y
    par url rewriting j'obtiens des url de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    www.site.fr/X/ (redirige vers le dossier Y par défaut)
    www.site.fr/X/Y/
    les clients souhaiteraient avoir une url de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    www.client.fr (qui redirigerait donc vers www.client.fr/Y/ avec Y par défaut)
    www.client.fr/Y/
    j'espère que c'est assez clair

  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
    Oui, c'est plus clair. Juste encore un détail : quand tu parles de dossier Y, tu ne parles pas d'un répertoire Y du document root, mais plutôt d'une notion "fonctionnelle" que sait traiter clients.php, c'est bien ça ?

    Donc, pour résumer, dans les VH de tes clients, tu doit avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DocumentRoot /var/www/vhosts/site.fr/httpdocs
    RewriteEngine on
    # Renvoie vers la page par defaut
    RewriteRule ^$ /clients.php?client=X [L]
     
    # Autres pages
    RewriteCond %{REQUEST_URI} !clients.php
    RewriteRule ^(.+)$ /clients.php?client=X&dossier=$1 [L]
    La dernière règle doit être adaptée par rapport à ton besoin exact (par exemple, j'ai mis (.+) au lieu de ([0-9]+)/ pour être plus général, notamment parce qu'il faut gérer le cas où l'utilisateur supprime le / en fin d'URL, par exemple).

  13. #13
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    merci beaucoup !

    j'ai enfin obtenu quelque chose qui marche après quelques modifications

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/10/2013, 18h08
  2. URL rewriting et nom de domaine
    Par gxgxf dans le forum Apache
    Réponses: 10
    Dernier message: 17/12/2010, 11h10
  3. Réponses: 11
    Dernier message: 06/11/2009, 18h09
  4. Réponses: 2
    Dernier message: 14/11/2007, 15h49
  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