Ich arbeite mit XAMPP unter Mac OS X. Ich versuche, eine Symfony-Website für einen Client ordnungsgemäß auszuführen. Ich kenne Symfony (noch) nicht. Ich möchte es nur installieren und starten.
Ich habe meine etc/hosts folgendermaßen geändert:
127.0.0.1 www.mysite.local
und die httpd.conf so:
<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>
Jetzt funktioniert die Site (yay!), Aber ich kann auf keine meiner anderen lokalen Sites mehr zugreifen, da localhost als www.mysite.local gerendert wird. Wo liege ich falsch?
Vielen Dank!
Das ist normal, wenn Sie es sehen. Da es der erste virtuelle Host-Eintrag ist, wird der lokale Host angezeigt.
Nehmen wir zum Beispiel an, Sie wollten nicht, dass diese Seite angezeigt wird. Alles, was Sie anzeigen möchten, ist die Apache-Seite, auf der es funktioniert, sodass Sie einen vhost-Eintrag vor mysite.local als lokalem Host vornehmen und auf die Seite zeigen, auf der es funktioniert.
Das ist aber normal. Ich hatte dieses Problem schon einmal, also mach dir keine Sorgen!
Das hat bei mir funktioniert!
Projekte wie http://localhost/projectName
<VirtualHost localhost:80>
ServerAdmin localhost
DocumentRoot path/to/htdocs/
ServerName localhost
</VirtualHost>
Projekte wie http://somewebsite.com
örtlich
<VirtualHost somewebsite.com:80>
ServerAdmin [email protected]
DocumentRoot /path/to/htdocs/somewebsiteFolder
ServerName www.somewebsite.com
ServerAlias somewebsite.com
</VirtualHost>
Gleiches gilt für andere Websites
<VirtualHost anothersite.local:80>
ServerAdmin [email protected]
DocumentRoot /path/to/htdocs/anotherSiteFolder
ServerName www.anothersite.local
ServerAlias anothersite.com
</VirtualHost>
localhost
leitet immer zu 127.0.0.1
weiter. Sie können dies täuschen, indem Sie Ihren anderen VirtualHost einer anderen lokalen Loopback-Adresse zuordnen, z. B. 127.0.0.2
. Stellen Sie sicher, dass Sie auch die entsprechende hosts
-Datei ändern, um dies zu implementieren.
Zum Beispiel sieht mein httpd-vhosts.conf
So aus:
<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>
(Beachten Sie, dass ich im Abschnitt <VirtualHost>
127.0.0.2:80
Eingegeben habe. Dies bedeutet, dass dieser Block von VirtualHost nur Anforderungen an den Port 127.0.0.2
Der IP-Adresse 80
Betrifft der Standardport für HTTP.
Um den Namen intranet.dev
Richtig zu routen, sieht meine hosts
Eingabezeile folgendermaßen aus:
127.0.0.2 intranet.dev
Auf diese Weise wird verhindert, dass Sie einen weiteren VirtualHost-Block für localhost
erstellen, was nicht erforderlich ist.
vielleicht möchten Sie dies verwenden:
<VirtualHost *:80>
DocumentRoot "somepath\Apache2.2\htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
als dein erster virtueller Host (platziere ihn vor einem anderen vhosts)
Ich hatte das gleiche Problem beim Zugriff auf localhost, während ich mit virtualHost arbeitete. Ich habe das Problem gelöst, indem ich den Namen wie folgt in den VirtualHost-Hörcode eingefügt habe:
In meiner hosts Datei habe ich folgenden Code hinzugefügt (C:\Windows\System32\drivers\etc\hosts) -
127.0.0.1 main_live
Und in meinem httpd.conf habe ich unten Code hinzugefügt -
<VirtualHost main_live:80>
DocumentRoot H:/wamp/www/raj/main_live/
ServerName main_live
</VirtualHost>
Das ist es. Es funktioniert, ich kann sowohl localhost, phpmyadmin als auch main_live (Mein virtuelles Projekt) gleichzeitig verwenden.
Zusätzliche Beschreibung für John Smiths Antwort aus amtlicher Dokumentation . Um zu verstehen, warum es so ist.
Hauptrechner geht weg
Wenn Sie einem vorhandenen Webserver virtuelle Hosts hinzufügen, müssen Sie auch einen Block für den vorhandenen Host erstellen . Der in diesem virtuellen Host enthaltene Servername und DocumentRoot müssen mit dem globalen Servernamen und DocumentRoot identisch sein. Listen Sie diesen virtuellen Host zuerst in der Konfigurationsdatei auf, damit er als Standardhost fungiert.
Um beispielsweise mit XAMPP ordnungsgemäß zu arbeiten und zu verhindern, dass VirtualHost den Haupthost überschreibt, fügen Sie folgende Zeilen in httpd-vhosts.conf
Ein.
# Main Host
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/xampp/htdocs"
</VirtualHost>
# Additional Host
<VirtualHost *:80>
# over directives there
</VirtualHost>
Für jemanden, der alles hier Beschriebene tut und trotzdem keinen Zugang hat:
Xampp mit Apache 2.4:
auf 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>
Keine Notwendigkeit für Port oder IP hier, Apache konfiguriert es auf seine eigenen Dateien. NameVirtualHost *: 80 ist nicht mehr erforderlich. Sie können es verwenden, aber es macht keinen Unterschied.
Dann, um Hosts zu bearbeiten, sie MÜSSEN NOTEPAD ALS ADMINISTRATOR LAUFEN (BESCHRIEBENER BLOCK). Wenn Sie die Datei bearbeiten, ohne dies zu tun, bearbeiten Sie eine Pseudodatei, nicht das Original.
In Fenstern:
Suchen Sie das Notizblock-Symbol, klicken Sie mit der rechten Maustaste, führen Sie es als Administrator aus, öffnen Sie die Datei, gehen Sie zu c:/windows/system32/driver/etc/hosts, aktivieren Sie "Alle Dateien anzeigen" und öffnen Sie die Hosts.
Wenn Sie es zuvor bearbeitet haben, sehen Sie wahrscheinlich, dass es nicht die Datei ist, die Sie zuvor bearbeitet haben, als Sie nicht als Administrator ausgeführt wurden.
Dann zu überprüfen Sie, ob Apache Ihre httpd-vhost.conf liest Gehen Sie zu xampFolder/Apache/bin, drücken Sie die Umschalttaste und die rechte Maustaste, öffnen Sie den Terminalbefehl hier, öffnen Sie xampp (wie gewohnt), starten Sie Apache und geben Sie dann in der Befehlszeile Folgendes ein httpd -S, sehen Sie eine Liste der virtuellen Hosts, überprüfen Sie einfach, ob Ihr something.dev da ist.
Nur ändern <VirtualHost *:80>
bis <VirtualHost 127.0.0.1:80>
.
Dann wird der Standardwert DocumentRoot
für alle Domänen oder IPs bereitgestellt, die auf Ihren Server verweisen, und der angegebene Wert VirtualHost
funktioniert.
Nach dieser Dokumentation: Name-based Virtual Host Support
Möglicherweise fehlt die folgende Anweisung:
NameVirtualHost *:80
möglicherweise ist Ihr Webordner (wie erwähnt "/ Applications/MAMP/htdocs/mysite/web") leer.
Mein Vorschlag ist, zuerst Ihr Projekt zu erstellen und dann daran zu arbeiten, einen virtuellen Host zu erstellen. Ich bin mit einer ähnlichen Situation gegangen. Ich habe einen leeren Ordner in der DocumentRoot in httpd-vhosts.confiz verwendet und kann nicht auf meine shahg101.com Site zugreifen
Ich verwende Ubuntu 16.04, das hat bei mir funktioniert:
/etc/Apache2/sites-available
. Dort finden Sie eine Datei mit dem Namen 000-default.conf
.cp 000-default.conf example.local.conf
<VirtualHost *:80>
bis <VirtualHost example.local:80>
ServerName example.local
Und wenn Sie müssen, fügen Sie diese Zeile hinzu: ServerAlias www.example.local
service Apache2 restart
Öffne einen Browser und navigiere zu example.local
. Sie sollten Ihre Website sehen.