我有一个启用了两个虚拟主机的 Apache 2.4 服务器:
/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
/etc/apache2/sites-enabled/my-website.conf
<VirtualHost my-website.com:80>
ServerAdmin [email protected]
ServerName my-website.com
Redirect permanent "/" "https://my-website.com/"
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost my-website.com:443>
....
</VirtualHost>
</IfModule>
我创建了一个指向同一台机器的域名:my-other-website.com。
当我在 my-other-website.com 上发出 http 请求(浏览器、curl...)时,我希望它能够为默认虚拟主机提供服务。相反,我将 301 重定向到https://my-website.com/
.
怎么来的?
换成<VirtualHost *:80>
没有<VirtualHost _default_:80>
帮助。
将两个虚拟主机设为
但是我会为两个主机使用一个 IP,它可以是相同的 IP
<VirtualHost xx.xx.xx.xx:80>
VirtualHost 行进有点奇特和特殊。
“问题”是您将 a
*:80
与后者混合hostname:80
,当收到对该 IP 地址和端口号组合的请求时,后者是首选匹配。并且 *:80 只是用于与您的 my-website.com 域没有相同 IP 地址的请求的默认虚拟主机。
见https://httpd.apache.org/docs/2.4/vhosts/details.html#hostmatching