在apache中配置多个站点



我使用Win10, Apache2.4和PHP7.4。我在Apache24htdocs中创建了2个测试站点- Test.com和Test2.com,都包含简单的index.php文件。以下是配置文件中的例外:

主机:

127.0.0.1 Test.com  www.Test.com
127.0.0.1 Test2.com www.Test2.com

httpd . conf:

# PHP7 module
PHPIniDir "C:/Dev/PHP-7.4.24"
LoadModule php7_module "C:/Dev/PHP-7.4.24/php7apache2_4.dll"
AddType application/x-httpd-php .php

httpd-vhosts.conf:

<VirtualHost _default_:80>
DocumentRoot "${SRVROOT}/htdocs"
ServerName www.example.com:80
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "${SRVROOT}/htdocs/Test.com"
ServerName Test.com
ServerAlias www.Test.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "${SRVROOT}/htdocs/Test2.com"
ServerName Test2.com
ServerAlias www.Test2.com
</VirtualHost>

加载test.com和test2.com时,浏览器显示htdocs的文件夹索引。只有点击其中一个索引显示实际的站点,浏览器地址字段变成,例如,http://test.com/Test.com/。如何配置apache显示站点地址如test.com?

<VirtualHost *:80>
</VirtualHost

嘿,apache,如果你在80端口上收到任何请求,请到test.com文件夹

嘿,apache,如果你在80端口上收到任何请求,去文件夹test2.com

哎!

所以如果我做一个localhost请求http://127.0.0.1:80 apache应该神奇地知道哪个文件夹去正确的?

同时加载test.comtest2.com时,浏览器显示htdocs的文件夹索引

如果ServerName(或ServerAlias)指令与请求的Host头不匹配,则会发生这种情况。然后它将默认为第一个<VirtualHost>

ServerName Test.com
ServerAlias www.Test.com

我不一定期望这是大小写敏感的,但是您已经将ServerName定义为Test.com(大写T),但是您请求的是test.com(全部小写)-浏览器会自动将HTTP请求中的主机名小写,因此您实际上无法请求Test.com

您应该将ServerName定义为全小写。

ServerName test.com
ServerAlias www.test.com
127.0.0.1 Test.com  www.Test.com
127.0.0.1 Test2.com www.Test2.com

同样,这也应该是小写的。

仅点击其中一个索引显示实际站点,浏览器地址字段变为,例如http://test.com/Test.com/

这看起来像你是不正确的链接到/Test.com子目录,而不是http://test.com主机?

我试图完全注释掉这个块-没有改变。

<VirtualHost>容器之外的主服务器配置中是否有类似的默认?

相关内容

  • 没有找到相关文章

最新更新