Apache : créer alias.monsite

Résolu
bruno -  
 bruno -
Bonjour,
(tout ceci est en intranet, dans ma résidence étudiante)
J'héberge actuellement avec Apache un site, accessible depuis http://monsite.
Cependant, j'ai plusieurs projets distincts, tous dans le même dossier (nommé Web). Ils sont dans différents dossiers (disons, de "a" à "h").
Actuellement, j'ai mis comme DocumentRoot le a : c'est celui sur lequel on arrive quand on tape http://monsite

J'aimerais cependant qu'il en aille différemment :
Quand on tape http://monsite, on est redirigé vers http://a.monsite, qui correpond au dossier /Web/a/
Et quand on tape http://lettre.monsite, on est arrive sur le dossier /web/lettre. Pour lettre dans {b...h}.

Bien sûr, ces dossiers ne sont pas appelés de a à h mais ont des noms plus précis, et je mettrais dans httpd.conf le texte nécessaire pour chaque. Cependant, je ne sais pas quel texte mettre...
Voilà, pourriez-vous m'aider ? J'ai cherché du côté des VirtualHost, mais ce n'est pas vraiment ça...

En espérant avoir été clair, et dans l'attente d'une réponse,
Merci d'avance
Configuration: Windows 7
Opera 9.80

9 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Les VirtualHost sont bien ce qu'il te faut.
    <VirtualHost *:80>
        ServerAdmin webmaster@example.com
        DocumentRoot /www/
        ServerName example.com
    </VirtualHost>
    <VirtualHost *:80>
        ServerAdmin webmaster@a.example.com
        DocumentRoot /www/a/
        ServerName a.example.com
    </VirtualHost>
    ...
    0
  2. bruno
     
    Merci beaucoup !

    J'ai donc décalé le DocumentRoot (à /Web au lieu de /Web/a), enlevé également le /a dans le <Directory>, qui gère les permissions, et rajouté des paragraphes de la forme :
    <VirtualHost *:80>
        ServerAdmin mon@dres.se
        DocumentRoot /lettre
        ServerName lettre.monnom
        ServerName lettre.monnom2
    </VirtualHost>
    

    (il y a deux adresses par lesquelles on peut accéder à mon ordi)

    Cependant, est-il possible de faire en sorte que ça marche même en local (je ne suis pas actuellement à ma rez...) ? j'ai essayé avec ServerName localhost
    pour le répertoire de base (a)
    et ServerName lettre.localhost
    pour les autres (b à h)
    Résultat : localhost me renvoie un superbe Forbidden (...You don't have permission to access / on this server.), et lettre.localhost ne marche pas !

    Merci - encore une fois - beaucoup
    0
  3. bruno
     
    Well, je crois avoir avancé : d'après ce que j'ai lu, il faut modifier C:\Windows\System32\drivers\etc\host : j'ai rajouté à la fin
    127.0.0.1				a.localhost
    127.0.0.1				b.localhost
    ...
    127.0.0.1				h.localhost


    Ce qui ne supprime cependant par le Forbidden !

    J'ai pourtant bien rajouté les
    ServerName lettre.localhost
    dans chaque VirtualHost !

    Merci d'avance...
    0
  4. bruno
     
    J'ai pas trouvé comment éditer mon message, donc je me réponds encore à moi même... (no comment)

    En mettant, dans chaque <VirtualHost>, le DocumentRoot en absolu (et pas en relatif), ça marche ! Enfin...

    Que je tape localhost, a.localhost, b.locahost, ... ou h.localhost, je retombe sur /Web/a. Autrement dit, il faut sûrement modifier le fichier host de Windows de manière plus fine que ce que j'ai fait... Et je cherche, mais sans trouver... avion-f16, vole à mon secours !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Il faut que tu crées un VirtualHost par sous-domaine !
    Et chaque sous-domaine et à mettre dans le fichier hosts de Windows.
    0
  7. bruno
     
    Mais... n'est-ce pas ce que j'ai déjà fait ? Dans httpd.conf, j'ai quelque chose de la forme :
    <VirtualHost *:80>
        ServerAdmin ...
        DocumentRoot "F:\...\Web\a"
        ServerName localhost
    </VirtualHost>
    <VirtualHost *:80>
        ServerAdmin ...
        DocumentRoot "F:\...\Web\b"
        ServerName b.localhost
    </VirtualHost>
    <VirtualHost *:80>
        ServerAdmin ...
        DocumentRoot "F:\...\Web\c"
        ServerName c.localhost
    </VirtualHost>
    ...
    <VirtualHost *:80>
        ServerAdmin ...
        DocumentRoot "F:\...\Web\h"
        ServerName h.localhost
    </VirtualHost>
    


    et dans le fichier hosts, comme je l'ai écrit, j'ai bien 8 lignes... (de a à h) !

    Ou bien - très possible - je n'ai pas compris ton dernier message ? Comment différencier les différents sous-domaines une fois qu'ils sont envoyés sur localhost.... ?
    Une solution pourrait être de les rediriger vers différents ports, mais ça me paraît plutôt moche...

    Merci d'avance
    0
  8. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Tu as bien fait, mais je n'ai aucun idée d'où peut provenir le problème du Forbiden
    0
  9. bruno
     
    Non non ! Je n'ai plus le problème du Forbidden ! cf. message 4 : mettre le DocumentRoot de chaque <VirtualHost> en absolu a réglé cela ! Le truc qui ne va pas, c'est que... a.localhost, b.localhost, ... h.localhost affichent la même chose que localhost (et que ce dernier seulement devrait afficher), à savoir /web/a.
    Autrement dit, lors du passage par le fichier hosts, hop ! a.localhost comme h.localhost partent vers 127.0.0.1. Et l'info du a. (ou h., etc.) est perdue, en quelque sorte : Ca affiche bêtement 127.0.0.1.
    0
  10. bruno
     
    Ahah, j'ai réussi !
    Il manquait quelque chose de très con : les <VirtualHost> n'étaient en fait pas activés... rajouter un NameVirtualHost *:80
    a réglé le problème...
    0