Apache : créer alias.monsite [Résolu/Fermé]

Signaler
-
 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

9 réponses

Messages postés
18564
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
11 juin 2021
4 296
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>
...
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
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...
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 !
Messages postés
18564
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
11 juin 2021
4 296
Il faut que tu crées un VirtualHost par sous-domaine !
Et chaque sous-domaine et à mettre dans le fichier hosts de Windows.
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
Messages postés
18564
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
11 juin 2021
4 296
Tu as bien fait, mais je n'ai aucun idée d'où peut provenir le problème du Forbiden
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.
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...