Apache : créer alias.monsite

Résolu/Fermé
bruno - 29 nov. 2009 à 12:25
 bruno - 29 nov. 2009 à 21:40
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

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
29 nov. 2009 à 14:46
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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
29 nov. 2009 à 17:39
Il faut que tu crées un VirtualHost par sous-domaine !
Et chaque sous-domaine et à mettre dans le fichier hosts de Windows.
0
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
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
29 nov. 2009 à 18:05
Tu as bien fait, mais je n'ai aucun idée d'où peut provenir le problème du Forbiden
0
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
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