无法让 www cname 在 apache 和 bind 中工作

无法让 www cname 在 apache 和 bind 中工作

在 Cent OS 6、apache 2.2、Bind 9.7.3 上,我无法使用 www cname 加载我的域名。如果我输入 example.com,它会加载正常,但 www.example.com 会从 /var/www/html 加载我的主要 apache 目录

这是我在 httpd.conf 中的内容:

NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot "/var/www/html/_domains/example.com"
ServerName example.com
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/var/www/html/_domains/example2.com"
ServerName example2.com
</VirtualHost>


<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName 94.00.00.00
</VirtualHost>

例如.com 的区域文件如下所示:

$ttl 38400
example.com.    IN  SOA example.com. webmaster.example.com. (
            1326544028
            10800
            3600
            604800
            38400 )

example.com.          IN NS   ns1.example.com.
example.com.          IN NS   ns2.example.com.
ns1.example.com.               IN A    94.00.00.00
ns2.example.com.               IN A    94.00.00.00
example.com.          IN A    94.00.00.00
mail.example.com.             IN A    94.00.00.00
www.example.com.              IN CNAME        example.com.
example.com.          IN MX  10 mail.example.com.

为什么 www.example.com 会加载默认 html 目录/var/www/html而不是/var/www/html/_domains/example.com?您有什么想法吗?

答案1

这是因为您没有将 www 包含在 Virtualhost 中。因此 Apache 不知道您在说什么。因此您还需要添加 ServerAlias:

<VirtualHost *:80>
   DocumentRoot "/var/www/html/_domains/example.com"
   ServerName example.com
   ServerAlias *.example.com
</VirtualHost>

答案2

你需要以下几行:

ServerAlias www.example.com

ServerAlias www.example2.com

答案3

看来您需要该ServerAlias指令。因此,您的虚拟主机定义应如下所示:

<VirtualHost *:80>
DocumentRoot "/var/www/html/_domains/example.com"
ServerName www.example.com
ServerAlias example.com *.example.com
</VirtualHost>

欲了解更多信息,您可以

相关内容