我的 Web 在 www.example.com 上返回 403,但在 [name].com 上工作正常。在我的 apache2.conf 文件中,我有 ServerName=www.example.com,在 VirtualHost 标记中也是如此,但在那里我也有 ServerAlias=example.com:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
...
当我运行 /usr/sbin/apache2ctl -S 时,我得到:
VirtualHost configuration:
*:80 is a NameVirtualHost
default server www.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost www.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost www.example.com (/etc/apache2/sites-enabled/www.example.com.conf:1)
alias example.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used
我想要的是 www.example.com 和 example.com 指向同一个服务。现在看来,当使用 www 前缀时,它使用的是默认的 conf 文件。
答案1
为了以防万一有人正在寻找答案,使用问题下的评论,我将 /etc/apache2/apache2.conf 中的 ServerName 设置为 localhost。
再加上正确的 VirtualHost 和 htaccess 重定向,我的域名的每个“版本”都会转到同一个版本。
感谢 erikwkolstad 和 DeadEye 的指点。