wake-up-neo.com

Apache VirtualHost und localhost

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!

60
Angelica Rosa

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!

24

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>
90
Ganatra

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.

27
Saiful

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)

11
John Smith

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.

8
Raj

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>
5
SiZE

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.

5
sagits

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.

3
SaEEd

Nach dieser Dokumentation: Name-based Virtual Host Support

Möglicherweise fehlt die folgende Anweisung:

NameVirtualHost *:80
2
Bjarni Rúnar

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

0
Shahmir

Ich verwende Ubuntu 16.04, das hat bei mir funktioniert:

  1. Öffne ein Terminal und CD an /etc/Apache2/sites-available. Dort finden Sie eine Datei mit dem Namen 000-default.conf.
  2. Kopieren Sie diese Datei: cp 000-default.conf example.local.conf
  3. Öffne diese neue Datei (ich benutze Nano; benutze das, womit du vertraut bist).
  4. Sie sehen viele kommentierte Zeilen, die Sie löschen können.
  5. Veränderung <VirtualHost *:80> bis <VirtualHost example.local:80>
  6. Ändern Sie den Dokumentstamm, um den Speicherort Ihrer Dateien wiederzugeben.
  7. Fügen Sie die folgende Zeile hinzu: ServerName example.local Und wenn Sie müssen, fügen Sie diese Zeile hinzu: ServerAlias www.example.local
  8. Speichern Sie die Datei und starten Sie Apache neu: service Apache2 restart

Öffne einen Browser und navigiere zu example.local. Sie sollten Ihre Website sehen.

0
Kenneth Odle