Apache : créer alias.monsite

Résolu
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. 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...
    1. 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.
      1. Tu as bien fait, mais je n'ai aucun idée d'où peut provenir le problème du Forbiden
        1. 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
          1. Il faut que tu crées un VirtualHost par sous-domaine !
            Et chaque sous-domaine et à mettre dans le fichier hosts de Windows.
            1. 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 !
              1. 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...
                1. 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
                  1. 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>
                    ...