votre problème est que votre nom d'alias et le chemin physique sont une seule et même, si apache ne sait pas lequel de servir.
NOTE: Je donne la réponse en fonction de la configuration générale Apache2, et non sur mod_mono, peut-être mod_mono fait quelque chose pour éviter cela, je l'ai pas défini applications MVC sous une boîte * nix avant :-)
Quoi qu'il en soit ...
si vous regardez vos configurations de chemin que vous avez ...
/Library/WebServer/vhosts/api
/Library/WebServer/vhosts/api/gamecenter
/Library/WebServer/vhosts/api/gamecenter-stage
sans vos alias en place, ceux-ci déjà résoudre les chemins que vous essayez de la carte.
/Library/WebServer/vhosts/api =/
/Library/WebServer/vhosts/api/gamecenter = /gamecenter
/Library/WebServer/vhosts/api/gamecenter-stage = /gamecenter-stage
Votre puis dire Apache
/ =/
/gamecenter = /gamecenter
/gamecenter-stage = /gamecenter-stage
Lorsque Apache tente de livrer le contenu s'il n'y a pas de fichier subfix ou slash existant (comme dans les 2 derniers), il sera automatiquement subfix le dossier avec a/émettre alors une redirection (306 je crois) dire essentiellement le navigateur pour rediriger de EG:
/gamecenter to /gamecenter/
Avec l'alias en place pour lui dire que alias ... est à l'emplacement x il alors h pour essayer de faire un desicion pour servir
/gamecenter/
ou
/gamecenter/gamecenter/../ (Because in terms of folder structure the alias name is 1 folder level down in the web than it is physically)
et finit par se confondre, et le fait que tout hôte virtuel mis en place fait quand il est incapable de résoudre le chemin, et qui est retourne la racine du site. Comme je le dis, cependant, il s'agit d'un comportement général d'Apache NON-MONO, il est possible que mod_mono puisse modifier le pipeline de traitement d'une manière ou d'une autre, ce qui peut changer ce comportement.
Ce que je recommanderais est de diviser ceci en 3 hôtes virtuels que vous pouvez faire très très facilement même sur une seule IP.
La première chose que vous voulez faire est somwhere dans votre fichier de configuration maître Apache, ont une déclaration
Listen 9005
.Ainsi, tous les instances virtuelles écouter sur ce port, ainsi que tout autre port configuré EG: 80
Suivant Assurez-vous que vous avez une prise par défaut tout hôte virtuel, ce attrapera un nom de serveur ne sont pas mappés ailleurs:
<VirtualHost *>
DocumentRoot "/some/folder/where/the/default/is/"
#Followed by other server directives. NOTE: there is NO servername line
</VirtualHost>
Une fois que vous avez cette installation, déplacez ensuite sur votre « api » sous-domaine
<VirtualHost *>
ServerName api
DocumentRoot "/Library/WebServer/vhosts/api/"
#Other required directives here
</VirtualHost>
à ce stade, je vais faire une pause pour discuter de votre nom de domaine. S'il s'agit d'un système de test interne (ce que je soupçonne), vous trouverez la vie avec des domaines virtuels plus facile si vous installez un serveur DNS sur votre boîte, puis configurez-le comme un domaine maître en utilisant une adresse réseau interne privée.
EG:
Créer une zone racine, et l'appellent "mydevnetwork.local"
ajouter ensuite les noms de machines à elle:
EG: si votre PC est appelé devpc1, créez une adresse IP adresse pour "devpc1.mydevnetwork.local" et donner à votre PC une adresse IP statique EG: 192.168.50.1
Ensuite, définissez un alias pour que si
api.myde vnetwork.local = devpc1.mydevnetwork.local
Iv'e n'a pas la place pour faire un post complet de configuration DNS ici, mais j'espère que vous avez l'idée.
Une fois que vous avez DNS (ou à une entrée de fichier hôte minimum) mis en place, alors vos hôtes virtuels sous Apache devient vraiment facile à gérer:
<VirtualHost *>
ServerName api.mydevnetwork.local
DocumentRoot "/Library/WebServer/vhosts/api/"
#Other required directives here
</VirtualHost>
et facile à déplacer vers une autre machine si vous avez besoin aussi .
Vous pouvez régler le reste de vos hôtes virtuels dans la même façon
<VirtualHost *>
ServerName gamecenter.mydevnetwork.local
DocumentRoot "/Library/WebServer/vhosts/api/gamecenter/"
#Other required directives here
</VirtualHost>
<VirtualHost *>
ServerName gamecenter-stage.mydevnetwork.local
DocumentRoot "/Library/WebServer/vhosts/api/gamecenter-stage/"
#Other required directives here
</VirtualHost>
Remarque iv'e définir les chemins pour les mêmes que vous aviez plus haut, et même si cela va fonctionner, je « d conseille vivement que vous donnez chacun son propre dossier unique, je fais généralement quelque chose comme:
wwwroot
api.mydevnetwork.local
htdocs <-- Web files go here
cgi-bin <-- cgi scripts go here and it's mapped to /cgi-bin/
logs <-- logs here
access <-- htpasswd files here
si tout va bien si ce qui précède n'est pas une solution complète, vous pourriez au moins obtenir d'autres idées d'enquête de celle-ci.
Bonjour, avez-vous déjà résolu ce problème? J'ai le même problème. – branoholy
rien encore. J'ai essayé toutes les configurations que j'ai pu trouver et aucune d'entre elles ne semble résoudre ce problème. regarde quand même. – chris
Si vous voulez voter et éditer ma question, assurez-vous de savoir d'abord de quoi il s'agit. – chris