[英]How to redirect requests for .php files to PHP-FPM for all virtual hosts in Apache 2.4?
[英]Several virtual hosts on the same port with Apache 2.4
我正在嘗試對Apache 2.4中的虛擬主機做一些簡單的事情(使用Wampserver 2.5)
我希望能夠擁有多個虛擬主機並通過以下方式簡單地訪問它們:
因此,通過閱讀官方指南,我在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.