Je travaille avec XAMPP sur Mac OS X. J'essaie de gérer correctement un site Web symfony pour un client. Je ne sais vraiment pas (encore) symfony, je veux simplement l'installer et le lancer.
J'ai changé mon etc/hosts de cette façon:
127.0.0.1 www.mysite.local
et le httpd.conf de cette façon:
<VirtualHost *:80>
ServerName www.mysite.local
DocumentRoot /Applications/MAMP/htdocs/mysite/web
DirectoryIndex index.php
<Directory /Applications/MAMP/htdocs/mysite/web>
AllowOverride All
Allow from All
</Directory>
Alias /sf /Applications/MAMP/htdocs/mysite/lib/vendor/symfony/data/web/sf
<Directory "/Applications/MAMP/htdocs/mysite/lib/vendor/symfony/data/web/sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
Maintenant, le site fonctionne (yay!), Mais je ne peux plus accéder à aucun de mes autres sites locaux car localhost est rendu en tant que www.mysite.local. Où je me trompe?
Je vous remercie!
Ceci est normal si vous le voyez. Comme il s'agit de la première entrée d'hôte virtuel, il affiche l'hôte local.
Disons par exemple que vous ne voulez pas que cette page apparaisse. Tout ce que vous voulez afficher, c'est Apache ça fonctionne: vous devez donc créer une entrée vhost avant mysite.local en tant qu'hôte local et le diriger vers la page ça marche.
Mais c'est normal. J'ai eu ce problème avant alors ne vous inquiétez pas!
Cela a fonctionné pour moi!
Pour exécuter des projets comme http://localhost/projectName
<VirtualHost localhost:80>
ServerAdmin localhost
DocumentRoot path/to/htdocs/
ServerName localhost
</VirtualHost>
Pour exécuter des projets comme http://somewebsite.com
localement
<VirtualHost somewebsite.com:80>
ServerAdmin [email protected]
DocumentRoot /path/to/htdocs/somewebsiteFolder
ServerName www.somewebsite.com
ServerAlias somewebsite.com
</VirtualHost>
Idem pour les autres sites
<VirtualHost anothersite.local:80>
ServerAdmin [email protected]
DocumentRoot /path/to/htdocs/anotherSiteFolder
ServerName www.anothersite.local
ServerAlias anothersite.com
</VirtualHost>
localhost
sera toujours redirigé vers 127.0.0.1
. Vous pouvez tromper cela en nommant votre autre VirtualHost en une autre adresse de bouclage local, telle que 127.0.0.2
. Assurez-vous également de changer le fichier hosts
correspondant pour implémenter cela.
Par exemple, mon httpd-vhosts.conf
ressemble à ça:
<VirtualHost 127.0.0.2:80>
DocumentRoot "D:/6. App Data/XAMPP Shared/htdocs/intranet"
ServerName intranet.dev
ServerAlias www.intranet.dev
ErrorLog "logs/intranet.dev-error.log"
CustomLog "logs/intranet.dec-access.log" combined
<Directory "D:/6. App Data/XAMPP Shared/htdocs/intranet">
Options Indexes FollowSymLinks ExecCGI Includes
Order allow,deny
Allow from all
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
(Notez que dans <VirtualHost>
section j'ai tapé 127.0.0.2:80
. Cela signifie que ce bloc de VirtualHost n’affectera que les requêtes adressées à l’adresse IP 127.0.0.2
Port 80
, qui est le port par défaut pour HTTP.
Pour router le nom intranet.dev
correctement, ma ligne d’entrée hosts
ressemble à ceci:
127.0.0.2 intranet.dev
De cette façon, cela vous évitera de créer un autre bloc VirtualHost pour localhost
, ce qui est inutile.
vous voudrez peut-être utiliser ceci:
<VirtualHost *:80>
DocumentRoot "somepath\Apache2.2\htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
en tant que premier hôte virtuel (placez-le devant un autre hôte virtuel)
J'ai eu le même problème d'accès à localhost lorsque je travaillais avec virtualHost. J'ai résolu en ajoutant le nom dans virtualHost listen code comme ci-dessous -
Dans mon fichier hôtes, j'ai ajouté le code ci-dessous (C:\Windows\System32\drivers\etc\hosts) -
127.0.0.1 main_live
Et dans mon httpd.conf j'ai ajouté le code ci-dessous -
<VirtualHost main_live:80>
DocumentRoot H:/wamp/www/raj/main_live/
ServerName main_live
</VirtualHost>
C'est ça. Cela fonctionne, je peux utiliser les deux localhost, phpmyadmin, ainsi que main_live (Mon projet virtuel) simultanément.
Description supplémentaire pour la réponse de John Smith tiré de la documentation officielle . Pour comprendre pourquoi c'est.
L'hôte principal s'en va
Si vous ajoutez des hôtes virtuels à un serveur Web existant, vous devez également créer un bloc pour l'hôte existant . Les noms ServerName et DocumentRoot inclus dans cet hôte virtuel doivent être identiques aux noms globaux ServerName et DocumentRoot. Répertoriez d'abord cet hôte virtuel dans le fichier de configuration pour qu'il agisse en tant qu'hôte par défaut.
Par exemple, pour fonctionner correctement avec XAMPP, pour éviter que VirtualHost ne remplace l'hôte principal, ajoutez des lignes de suivi dans httpd-vhosts.conf
# Main Host
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/xampp/htdocs"
</VirtualHost>
# Additional Host
<VirtualHost *:80>
# over directives there
</VirtualHost>
Pour quelqu'un qui fait tout ce qui est décrit ici et qui n'a toujours pas accès:
Xampp avec Apache 2.4:
sur httpd-vhost.conf
<VirtualHost *>
DocumentRoot "D:/xampp/htdocs/dir"
ServerName something.dev
<Directory "D:/xampp/htdocs/dir">
Require all granted #Apache v 2.4.4 uses just this
</Directory>
</VirtualHost>
Pas besoin de port, ni d'ip ici, Apache le configure sur ses propres fichiers. Pas besoin de NameVirtualHost *: 80, c'est obsolète, vous pouvez l'utiliser, mais ne faites aucune différence.
Ensuite, pour éditer des hôtes, vous DEVEZ exécuter le bloc-notes en tant qu'administrateur (si vous éditez le fichier sans le faire, vous éditez un pseudo fichier, pas l'original (oui, il enregistre et merde, mais ce n'est pas le fichier réel)
Dans les fenêtres:
Icône de recherche de bloc-notes, clic droit, exécution en tant qu'administrateur, ouverture de fichier, allez à c:/windows/system32/driver/etc/hosts, cochez la case "voir tous les fichiers", ouvrez des hôtes.
Si vous l'aviez déjà modifiée auparavant, vous verrez probablement que ce n'est pas le fichier que vous aviez précédemment modifié sans être exécuté en tant qu'administrateur.
Puis à vérifier si Apache lit votre httpd-vhost.conf , allez dans xampFolder/Apache/bin, shift + clic droit, ouvrez la commande de terminal ici, ouvrez xampp (comme vous le faites habituellement), démarrez Apache, puis sur la ligne de commande, tapez httpd -S, vous verrez une liste des hôtes virtuels, vérifiez si votre quelque chose.dev est là.
Il suffit de changer <VirtualHost *:80>
à <VirtualHost 127.0.0.1:80>
.
Alors par défaut, DocumentRoot
servira pour tous les domaines ou toutes les adresses IP pointant vers votre serveur et spécifiant VirtualHost
fonctionnant.
Selon cette documentation: support d’hôte virtuel basé sur un nom
Il se peut que vous manquiez la directive suivante:
NameVirtualHost *:80
cela est peut-être dû au fait que votre dossier Web (comme indiqué "/ Applications/MAMP/htdocs/mysite/web") est vide.
Ma suggestion est d'abord de faire votre projet et ensuite de travailler sur la création d'hôte virtuel. Je suis allé avec une situation similaire. J'utilisais un dossier vide dans le DocumentRoot dans httpd-vhosts.confiz et je ne peux pas accéder à mon shahg101.com site
Je suis sous Ubuntu 16.04, voici ce qui a fonctionné pour moi:
/etc/Apache2/sites-available
. Vous y trouverez un fichier nommé 000-default.conf
.cp 000-default.conf example.local.conf
<VirtualHost *:80>
à <VirtualHost example.local:80>
ServerName example.local
Et si vous en avez besoin, ajoutez cette ligne: ServerAlias www.example.local
service Apache2 restart
Ouvrez un navigateur et accédez à example.local
. Vous devriez voir votre site web.