我想要做的是显示一个网页,当一个域被访问,但如果有人试图直接访问IP(而不是使用域)我想给他看另一个页面。
经典的名称基于Apache主机权?
那么我唯一的问题是我应该把什么,在ServerName和/或ServerAlias?
到目前为止我所做的是取消这条线:
NameVirtualHost *:80
我已经设置了2个这样的虚拟主机(具体信息隐藏):
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/vhosts/default/ ServerName {my-dedicated-ip} ErrorLog /var/www/vhosts/default/error.log CustomLog /var/www/vhosts/default/custom.log gk </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/vhosts/something/httpdocs/ ServerName valid-domain.com ServerAlias *.valid-domain.com ErrorLog "| /usr/sbin/rotatelogs -l /var/www/vhosts/something/logs/error.log.%Y.%m.%d 86400" CustomLog "| /usr/sbin/rotatelogs -l /var/www/vhosts/somthing/logs/custom.log.%Y.%m.%d 86400" gk </VirtualHost>
但不幸的是它不工作。
提前致谢。
编辑:哦,我有一个专用的IP。
我也刚刚发现这个: 我怎样才能让Apache不响应一个IP-唯一的请求? 据此,我的设置应该工作。 它应该访问它find的第一个虚拟主机。 但事实并非如此。 它走到第二个。
编辑:apachectl -S输出:
[root@me conf.d]# apachectl -S VirtualHost configuration: wildcard NameVirtualHosts and _default_ servers: *:80 is a NameVirtualHost default server domain.com (/etc/httpd/conf/httpd.conf:1015) port 80 namevhost {my-dedicated-ip} (/etc/httpd/conf/httpd.conf:1015) port 80 namevhost valid-domain.com (/etc/httpd/conf/httpd.conf:1023) wild alias *.vaild-domain.com Syntax OK
是的2个虚拟主机在同一个文件中。
在Apache 2.2中,用_default_指令指定一个默认的虚拟主机 ,它应该匹配ip地址以及在后续的VirtualHost条目中没有明确定义为ServerName或ServerAlias的所有域名。
例如:
<VirtualHost _default_:80> DocumentRoot /var/www/vhosts/default/ ServerName default </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/vhosts/something/httpdocs/ ServerName valid-domain.com </VirtualHost>