我正在学习为 apache 2 配置基于名称的虚拟主机。
现在,我的域名http://我的域名.com 指向 /var/www/index.html。我希望它指向我新创建的 /srv/www/mydomain.com/public_html/index.html。
我目前有两个文件:
- /etc/apache2/站点可用/默认
- /etc/apache2/sites-available/mydomain.com
它们看起来是这样的:
/etc/apache2/站点可用/默认
NameVirtualHost myipaddr:80
<VirtualHost myipaddr: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>
## other default directives
</VirtualHost>
/etc/apache2/sites-available/mydomain.com
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot /srv/www/mydomain.com/public_html/
ErrorLog /srv/www/mydomain.com/logs/error.log
CustomLog /srv/www/mydomain.com/logs/access.log combined
</VirtualHost>
我执行了 a2ensite mydomain.com 并重新启动了 apache,但是http://我的域名.com仍然指向默认的 /var/www/ 目录。我猜 apache 没有注册我的 /etc/apache2/sites-available/mydomain.com 文件?
我是否错过了配置和安装的某个步骤?
答案1
我不确定这是否是问题所在,但首先出现的问题是您在 NameVirtualHost 设置中使用了 IP,并且在 mydomain.com 中使用了通配符。您可能应该在 NameVirtualHost 和默认虚拟主机中使用通配符。
答案2
- 您应该为“默认”设置一个不同的名称
ServerName 不是 www.mydomain.com
- 您还可以将所有 NameVirtualHost 和 VirtualHost 设置为 *:80,以保证配置的统一性