Tid*_*ddo 29 apache virtualhost
如何在apache中设置默认的VirtualHost?我希望默认主机不要与ip地址主机相同.现在我有这样的事情:
NameVirtualHost *
<VirtualHost *>
ServerAdmin admin@domain.com
DocumentRoot /someOtherDir/
ServerAlias ip.of.the.server
</VirtualHost>
<VirtualHost *>
ServerAdmin admin@domain.com
DocumentRoot /someroot/
ServerAlias domain.com *.domain.com
</VirtualHost *>
Run Code Online (Sandbox Code Playgroud)
如果域转发到我的服务器,但不在此vhost.conf文件中,则会按预期加载/ someOtherDir /中的文件.但我希望能够为ip-address本身和未添加到vhost.conf文件中的域使用不同的根(尚未).这可能吗?
编辑:纠正了我的代码,所以它看起来更像实际的vhost.conf文件
Tid*_*ddo 46
我找到了答案:我记得如果没有找到其他匹配块,Apache会使用第一个块,所以我在块serveralias的顶部添加了一个没有a 的块:
NameVirtualHost *
<VirtualHost *>
DocumentRoot /defaultdir/
</VirtualHost>
<VirtualHost *>
ServerAdmin admin@domain.com
DocumentRoot /someOtherDir/
ServerAlias ip.of.the.server
</VirtualHost>
<VirtualHost *>
ServerAdmin admin@domain.com
DocumentRoot /someroot/
ServerAlias domain.com *.domain.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
小智 8
如果您使用的是Debian样式的虚拟主机配置(sites-available/sites-enabled),设置Default VirtualHost的一种方法是首先在httpd.conf或apache.conf中包含特定的配置文件(或者您的主要配置是什么)文件).
# To set default VirtualHost, include it before anything else.
IncludeOptional sites-enabled/my.site.com.conf
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
# Load virtual host config files from "/etc/httpd/sites-enabled/".
IncludeOptional sites-enabled/*.conf
Run Code Online (Sandbox Code Playgroud)
实际上,我在 EC2 Linux AMI 上使用 Apache/2.4.39 (Amazon) 的虚拟主机配置(站点可用/站点启用)。因此,我有 1 个 EC2 实例来为许多站点(域)提供服务。
考虑到您已经安装并运行了虚拟主机。在我的文件夹中/etc/httpd/sites-available,我有一些带有域名(后缀.conf)的文件,例如:example.com.conf. 像这样创建一个新文件。
sudo nano /etc/httpd/sites-available/example.com.conf
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/html/domain
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
对于每个file.conf可用站点,我创建一个符号链接:
sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
这是默认配置,因此,如果直接通过服务器的 IP 访问,您将被重定向到.confsite-available 文件夹中第一个文件 ( ) 的 DocumentRoot,按文件名排序。
要在通过 IP 访问时拥有默认的 DocumentRoot 文件夹,您必须创建一个名为 的文件0a.conf,然后 Apache 将为该站点提供服务,因为这个新文件将是站点可用文件夹中的第一个。
您必须创建一个符号链接:
sudo ln -s /etc/httpd/sites-available/0a.conf /etc/httpd/sites-enabled/0a.conf
要检查服务顺序,请使用它:
sudo apachectl -S
现在,重新启动 Apache,并检查它。
这里的其他答案对我不起作用,但我找到了一个非常简单的解决方案。
我将默认值设置为列出的最后一个,然后我给了它ServerAlias *。
例如:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.secondwebsite.com
ServerAlias secondwebsite.com *.secondwebsite.com
DocumentRoot /home/secondwebsite/web
</VirtualHost>
<VirtualHost *:80>
ServerName www.defaultwebsite.com
ServerAlias *
DocumentRoot /home/defaultwebsite/web
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
如果访问者没有明确选择转到以 结尾的内容secondwebsite.com,他们将获得默认网站。