Virtueller WAMP-Host funktioniert nicht

Lesezeit: 8 Minuten

Ich verwende eine Wamp-Version 2.5. Mein Apache ist 2.4.9 PHP: 5.5.12 MySQL: 5.6.17

Ich habe diese Konfigurationen:

Auf meinem httpd.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Auf meinem G:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhost.conf

# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#


#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#


<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/Apache24/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/Apache24/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>


<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/wamp/www"
    ServerName localhost
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "g:\wamp\www\mysite\public"
    ServerName mysite.dev
</VirtualHost>

Auf meinem c:\Windows\System32\Drivers\etc\hosts

# localhost name resolution is handled within DNS itself.
127.0.0.1   localhost
127.0.0.1   mysite.dev
#   ::1     localhost

Ich versuche, über diese URL auf mein Projekt zuzugreifen: http://www.mysite.dev/ SONDERN Ich bekomme ein Server not found error Ich habe versucht, darauf zuzugreifen www.mysite.dev , http://mysite.dev aber trotzdem pech!

Mein virtueller Host hat vorher funktioniert, aber ich bin mir nicht sicher, warum es jetzt nicht funktioniert. Es passieren einige seltsame Dinge.

Ich bin mir nicht sicher, was passiert. Irgendwelche Ideen werden sehr geschätzt!

Vielen Dank!

  • Haben Sie so etwas ausprobiert?

    – Darren

    30. September 2014 um 5:34 Uhr

  • Verwenden Sie in der URL nur mysite.dev. und prüfe

    – Roshan Dandgavhal

    30. September 2014 um 5:36 Uhr

  • Und überprüfen Sie auch in Ihrer mysite\public, ob dort index.php vorhanden ist?

    – Roshan Dandgavhal

    30. September 2014 um 5:37 Uhr

  • @RoshanDandgavhal ja, die index.php ist da.

    – Jason M

    30. September 2014 um 5:54 Uhr

  • @ Darren Ich werde das versuchen.

    – Jason M

    30. September 2014 um 5:54 Uhr

Benutzer-Avatar
RiggsFolly

Zuerst müssen Sie das Beispiel entfernen Attrappe Definitionen aus Ihrer Datei vhost-httpd.conf. Sie sind da als nur Beispiele nur um Ihnen den Einstieg in die Syntax zu erleichtern, und sollte nicht aktiv bleiben conf/extra/httpd-vhosts.conf da sie auf nicht vorhandene Ordner verweisen.

Entfernen Sie also diese 2 Definitionen aus der Datei:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/Apache24/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/Apache24/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

Zweitens ist Apache 2.4.x IPV4 ( 127.0.0.1 ) und IPV6 (::1) bewusst, also Ihr hosts sollte wie folgt aussehen, mit Definitionen für IPV4- und IPV6-Versionen für jede Site. Der Browser kann beides beliebig verwenden, sodass Sie beide benötigen, wird aber wahrscheinlich das IPV6-Netzwerk dem IPV4 vorziehen, wenn beide tatsächlich auf Ihrem PC aktiv sind.

127.0.0.1   localhost
::1  localhost

127.0.0.1   mysite.dev
::1  mysite.dev

Versuchen Sie nun auf den 2 virtuellen Hosts, die tatsächlich auf Ihrem System vorhanden sind, dies als Definition des virtuellen Hosts:

<VirtualHost *:80>
    DocumentRoot "g:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
    <Directory  "G:/wamp/www">
        AllowOverride All
        Options Indexes FollowSymLinks
        Require local
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "g:\wamp\www\mysite\public"
    ServerName mysite.dev
    ServerAlias www.mysite.dev
    ErrorLog "logs/mysite-error.log"
    CustomLog "logs/mysite-access.log" common
    <Directory  "G:/wamp/www/mysite/public">
        AllowOverride All
        Options Indexes FollowSymLinks
        Require local
    </Directory>
</VirtualHost>

Das <Directory>....</Directory> Abschnitt innerhalb der <VirtualHost>....</VirtualHost> Abschnitt teilt Apache mit, von welchen IP-Adressen Verbindungen akzeptiert werden dürfen, also unter Verwendung der Apache 2.4-Syntax Require local schränkt den Zugriff so ein, dass nur der PC, auf dem WAMPServer ausgeführt wird, dh Apache, eine Verbindung zu einer dieser Sites herstellen kann.

Vermeiden Sie es, Apache 2.2-Syntax und Apache 2.4-Syntax in derselben Definition zu mischen. Also nicht verwenden

Order Allow,Deny
Allow from all

und

Require all granted

in der gleichen Definition. Sie verwenden Apache 2.4, verwenden Sie also die Apache 2.4-Syntax.

Wenn Sie feststellen möchten, dass andere PCs in Ihrem lokalen Netzwerk Ihre Site sehen können, z. B. Arbeitskollegen oder Kinder usw., können Sie diese Syntax zu einer oder mehreren Ihrer Virtual Host-Definitionen hinzufügen.

Erlauben Sie nur einem einzigen anderen PC den Zugang zu Ihrer Website

Require local
Require ip 192.168.1.100

oder 2 andere PCs

Require local
Require ip 192.168.1.100, 192.168.1.101

Oder für jeden in Ihrem lokalen Netzwerk verwenden Sie einfach die ersten 3 der 4 Quartile der IP-Adresse.

Require ip 192.168.1

Vermeiden Sie auch die Verwendung der Syntax, die den Zugriff von überall erlaubt, z

Require all granted  <--Apache 2.4 syntax

or 

Order Allow,Deny     <-- Apache 2.2 syntax
Allow from all    

Es kann Ihre Probleme kurzfristig lösen, wartet aber nur darauf, Sie irgendwann später zu erwischen, wenn Sie sich entscheiden, Ihre Website einem Freund/Kunden/Chef zu zeigen. Wenn Sie auf die Stufe des Port-Forwardings kommen, wird Ihr Router damit weltweit in Ihr Netzwerk zugelassen, was dazu führen würde ALLE IHRE WEBSITES der Welt zugänglich zu machen.

Es ist besser, die EINE virtuelle Host-Definition für die EINE Website zu ändern, von der Sie möchten, dass die Leute sie zum Testen/Angeben sehen Require local zu Require all granted und erlauben Sie nur den Zugriff auf diese einzelne Site aus dem Internet.

Nachdem Sie alle diese Änderungen vorgenommen haben, denken Sie daran, Apache neu zu starten.

Auch wenn Sie die Hosts-Datei ändern, um die Änderungen zu aktivieren, sollten Sie entweder neu starten oder diesen Befehl von der Befehlszeile eines Befehlsfensters ausführen, das gestartet wird Runs as Administrator Möglichkeit.

net stop dnscache
net start dnscache

Wenn Sie Windows 10 verwenden, funktionieren die oben genannten DNS-Befehle nicht mehr, Sie sollten dies stattdessen tun.

ipconfig /flushdns

  • Oh mein Gott, ich bin mir nicht sicher, welches tatsächlich funktioniert hat. ::1 und Syntaxunterschied in den Versionen, da ich zwei Änderungen vorgenommen habe (IP6-fähige Hosts-Datei und Korrektur der 2.4-Konfigurationssyntax). Ich hatte wochenlang große Probleme (was dazu führte, dass ich keine virtuellen Hosts verwendete, sondern bei Bedarf die Sites wechselte). Vielen Dank

    – dejjub-AIS

    31. März 2015 um 9:47 Uhr

  • Vielen Dank, das Hinzufügen von ::1 zu meiner Hosts-Datei hat das Problem gelöst!

    – Alex Lomia

    24. September 2016 um 20:19 Uhr

Aufgrund der Übernahme von .dev gTLD durch Google ist es nicht mehr ohne weiteres möglich, .dev-Entwicklungsseiten zu haben. Der beste Weg, dies abzumildern, besteht darin, Ihre Entwicklungsdomäne einfach in .local oder etwas, das Sie bevorzugen, umzubenennen.

Was im Hintergrund passiert, ist, dass der lokale DNS-Server den Browser auf 127.0.53.53 umleitet (cmd öffnen > nslookup yourdomain.dev), um die Endbenutzer darüber zu informieren, dass .dev gTLD erworben wird. Da die .dev-Domain in der Hosts-Datei auf 127.0.0.1 eingestellt ist, wird die Verbindung verweigert angezeigt.

Sie können 127.0.0.1 in der Hosts-Datei in 127.0.53.53 ändern und sehen, dass sich der Browserfehler von ERR_CONNECTION_REFUSED in ERR_ICANN_NAME_COLLISION ändert.

Benutzer-Avatar
Mahesh Hegde

Folgendes funktioniert bei mir

<VirtualHost *:80>
    DocumentRoot "G:\project\test.dev"
    ServerAdmin [email protected]
    ServerName test.dev
    ErrorLog "logs/test.dev-error.log"
    CustomLog "logs/test.dev-access.log" common
    <Directory "G:\project\test.dev">
       AllowOverride All
       Options Indexes FollowSymLinks
       Require local
    </Directory>
</VirtualHost>

Benutzer-Avatar
D. Chatzimichailidis

Ich behebe das gleiche Problem, indem ich einige Zeilen in httpd.conf im Apache-Ordner auskommentiere.

Kommentieren Sie die folgenden Zeilen aus:

Include conf/extra/httpd-vhosts.conf
LoadModule vhost_alias_module modules/mod_vhost_alias.so

Speichern Sie die Datei und starten Sie Ihren Apache neu und es wird funktionieren. Vielen Dank an diesen Mann:
https://john-dugan.com/wamp-vhost-setup/

Ich komme sehr spät zu dieser Frage, ich habe alles getan, was von @RiggsFolly erwähnt wurde, aber eine Sache, die ich geändert habe, hat dazu geführt, dass es sofort funktioniert. ich habe mich verändert .dev zu .test da .dev reserviert ist. hoffe das hilft

  • @Jonjie froh, dass ich es getan habe, ich habe Webentwickler vor langer Zeit verlassen, bin aber immer noch nützlich = D

    – HichemSeeSharp

    28. Dezember 2019 um 18:03 Uhr


  • haha schön. Wie auch immer, wissen Sie, warum und wo .dev reserviert hat?

    – Jie

    7. Januar 2020 um 4:33 Uhr

Benutzer-Avatar
Kiryl Pljaschkewitsch

Schauen Sie sich diese Module unkommentiert in httpd.conf an

  • Proxy_Modul
  • proxy_http_module

  • @Jonjie froh, dass ich es getan habe, ich habe Webentwickler vor langer Zeit verlassen, bin aber immer noch nützlich = D

    – HichemSeeSharp

    28. Dezember 2019 um 18:03 Uhr


  • haha schön. Wie auch immer, wissen Sie, warum und wo .dev reserviert hat?

    – Jie

    7. Januar 2020 um 4:33 Uhr

Benutzer-Avatar
Jangya-Satapathie

versuchen Sie dies auf Ihrer Apache httpd.config-Datei:

    <VirtualHost *:80>
      ServerName mysite.dev
      DocumentRoot "g:\wamp\www\mysite\public"
     SetEnv APPLICATION_ENV "development"

     <Directory "g:\wamp\www\mysite\public">
        DirectoryIndex index.php
        Options All Includes Indexes
        Options All Indexes FollowSymLinks 
        Order allow,deny
        Allow from all
        Require all granted
     </Directory>
  </VirtualHost>

Starten Sie Ihren Wamp-Server neu und geben Sie eine URL wie mysite.dev/ in Ihren Browser ein. hoffe es wird dir helfen. Danke.

1015080cookie-checkVirtueller WAMP-Host funktioniert nicht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy