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