簡體   English   中英

與Apache 2.4相同端口上的多個虛擬主機

[英]Several virtual hosts on the same port with Apache 2.4

我正在嘗試對Apache 2.4中的虛擬主機做一些簡單的事情(使用Wampserver 2.5)

我希望能夠擁有多個虛擬主機並通過以下方式簡單地訪問它們:

  • www.project1.dev
  • www.project2.dev

因此,通過閱讀官方指南,我在httpd.conf進行了以下配置:

NameVirtualHost \*:80

#
# Project 1
#

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/myProject1/"
    ServerName www.project1.dev
    ErrorLog "logs/project1-error_log "
    CustomLog "logs/project1-access_log" common
    <Directory "C:/wamp/www/myProject1/">
      AllowOverride all
      Require all granted
    </Directory>
</VirtualHost>

#
# Project 2
#

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/myProject2/"
    ServerName www.project2.dev
    ErrorLog "logs/project2-error_log "
    CustomLog "logs/project2-access_log" common
    <Directory "C:/wamp/www/myProject2/">
      AllowOverride all
      Require all granted
    </Directory>
</VirtualHost>

我也將它們添加到我的hosts文件中

127.0.0.1 http://project1.dev
127.0.0.1 http://project2.dev

但是,當我在重啟wamp服務后進行測試時, http C:/wamp/www/myProject1/http://project2.dev都指向C:/wamp/www/myProject1/

project2.dev相關的第二個路徑C:/wamp/www/myProject2/似乎被忽略了。

我想念什么嗎?

謝謝。

您尚未在任何地方定義http://project2.dev ,僅定義了http://www.project2.dev 因此,Apache無法找到匹配項,因此默認返回到第一個配置。

將以下配置添加到第一個虛擬主機:

ServerAlias project1.dev

和第二個類似:

ServerAlias project2.dev

然后重新啟動Apache。

一個簡單的答案是,從Apache 2.4開始,不再需要或不允許使用NameVirtualHost *:80語法! 它將引發錯誤並導致Apache無法啟動。 如果要查找該錯誤,它將顯示在apache error log

哦, NameVirtualHost \\*:80永遠都不對!

因此,只需完全刪除行NameVirtualHost \\*:80

定義虛擬主機后, httpd.conf的localhost將被忽略,因此您也應在httpd-vhost.conf定義,否則其他2個VH def看起來很好,除了ServerName和缺少的ServerAlias以及缺少的Options

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/"
    ServerName localhost
    <Directory "C:/wamp/www/">
      Options Indexes FollowSymLinks MultiViews
      AllowOverride all
      Require local
    </Directory>
</VirtualHost>


#
# Project 1
#

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/myProject1/"
    ServerName project1.dev
    ServerAlias www.project1.dev
    ErrorLog "logs/project1-error_log "
    CustomLog "logs/project1-access_log" common
    <Directory "C:/wamp/www/myProject1/">
      AllowOverride all
      Options Indexes FollowSymLinks MultiViews
      Require all granted
    </Directory>
</VirtualHost>

#
# Project 2
#

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/myProject2/"
    ServerName project2.dev
    ErrorLog "logs/project2-error_log "
    CustomLog "logs/project2-access_log" common
    <Directory "C:/wamp/www/myProject2/">
      AllowOverride all
      Options Indexes FollowSymLinks MultiViews
      Require all granted
    </Directory>
</VirtualHost>

Quote: 但是,當我在重啟wamp服務后進行測試時, http ://project1.dev和http://project2.dev都指向C:/ wamp / www / myProject1 /

如果您的VH定義中有錯誤,Apache將默認使用httpd-vhosts.conf中第一個正確定義的VH,因此這可能正在發生

至於您的HOSTS文件,它應該包括對IPV4和IPV6堆棧的引用,尤其是當Windows似乎越來越多地使用IPV6堆棧時,畢竟我們最終要使用的位置,並且它不應該包含httpd://因此應該是這樣的:

#IPV4 stack ip addresses
127.0.0.1 localhost
127.0.0.1 project1.dev
127.0.0.1 project2.dev

#IPV6 stack ip addresses
::1 localhost
::1 project1.dev
::1 project2.dev

更改HOSTS文件后,您需要重新啟動,或在命令窗口中執行以下操作,並以“以管理員身份運行”啟動Windows

net stop dnscache
net start dnscache

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM