在域名上使用不带 www 的默认 VirtualHost

在域名上使用不带 www 的默认 VirtualHost

我使用 Debian 8.1 64 位,并设置了主机名,因此我的登录名是[email protected]。我安装了 Apache2、PHP 等……并且还设置了 VirtualHost:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.example.com

    ServerAdmin admin@localhost
    DocumentRoot /var/www/example.com/
    <Directory "/var/www/example.com/">
        Options FollowSymLinks
        AllowOverride All
    </Directory>

</VirtualHost>

DNS 设置:

example.com     1800    A       111.111.111.111
example.com     1800    MX  1   example.com
*.example.com   1800    CNAME   example.com

当我转到时http://example.com/,它会加载/var/www/html/索引,当我转到时,http://www.example.com/它运行良好。我尝试了很多编辑,但都没有用。这可以连接到我的服务器的主机名吗?有什么想法吗?

答案1

这是您的ServerName设置方式ServerAlias

ServerName example.com
ServerAlias *.example.com

但我建议像ServerName这样设置ServerAlias

ServerName www.example.com
ServerAlias www example.* www.example.*

当我为自己拥有的公共域名设置多个顶级域名时,我喜欢使用通配符。但如果您只有版本,.com则可以像这样设置:

ServerName www.example.com
ServerAlias www example.com www.example.com

然后重新启动 Apache,一切就好了:

sudo service apache2 restart

但如果您认为这是主机名问题,您可以执行此操作来确认或更改服务器的主机名。首先,获取主机名,如下所示:

hostname

如果您想更改该主机名,只需运行以下命令:

sudo hostname example.com

另外,检查这样的sysctl设置:kernel.hostname

sysctl kernel.hostname

如果需要更改,请这样做:

sudo sysctl kernel.hostname=example.com

完成此操作后,请确保已调整与主机名相关的所有设置(/etc/hosts如果需要),然后重新启动计算机。当计算机再次启动时,尝试一下,看看会发生什么。现在应该没问题了。

相关内容