SJa*_*r13 68 virtualhost apache-2.2
如果我有 3 个域,domain1.com、domain2.com 和 domain3.com,是否可以为未列出的域设置默认虚拟主机?例如,如果我有:
<VirtualHost 192.168.1.2 204.255.176.199>
DocumentRoot /www/docs/domain1
ServerName domain1
ServerAlias host
</VirtualHost>
<VirtualHost 192.168.1.2 204.255.176.199>
DocumentRoot /www/docs/domain2
ServerName domain2
ServerAlias host
</VirtualHost>
<VirtualHost 192.168.1.2 204.255.176.199>
DocumentRoot /www/docs/everythingelse
ServerName *
ServerAlias host
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
如果您注册一个域并将其指向我的服务器,它将默认显示与域 3 相同的所有其他内容。那可能吗?
小智 91
使用基于名称的虚拟主机时,加载的第一个虚拟主机配置将是默认值(来源:Apache Wiki)。例如,使用下面的配置,否则不匹配的域将匹配domain-one.com:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName domain-one.com
# Other options and directives ..
</VirtualHost>
<VirtualHost *:80>
ServerName domain-two.com
# Other options and directives ..
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
许多服务器没有单一的配置文件,但有几个特定于主机的配置文件,组织如下:
/etc/apache2
|-- sites_available (actual configuration files)
`-- sites_enabled (symlinks to files in sites_available)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,要首先加载特定的虚拟主机配置,请将符号链接重命名为排序时最先出现的内容,例如00-default.
其他一些答案并不完全正确。根据 Apache Wiki,不在ServerName虚拟主机中设置 a是不正确的。如果ServerName没有首先加载没有 a 的主机,Apache 甚至可能永远不会使用它,因为第一个加载的主机将是默认的。
此外,虽然ServerAlias *确实会匹配任何内容,但它也可能会覆盖稍后定义的其他虚拟主机。如果它始终是要定义的最后一个虚拟主机(如问题中给出的配置),则这种方法可能会起作用,但这意味着添加新指令并更改排序顺序,而不是仅更改上述顺序。
fre*_*eit 44
是的,这应该可以工作,除了 ServerAlias 应该是“*”,并且 ServerName 设置为实际的主机名。您可能需要确保 VirtualHost 是最后加载的...
不要指定服务器名称,这将成为您的默认虚拟主机..
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
还要确保您没有在主 httpd.conf 文件中指定 DocumentRoot,因为这将优先于 vhost。
| 归档时间: |
|
| 查看次数: |
110647 次 |
| 最近记录: |