我的服务器上有 2 个网站。一个我通过我的 IP 访问,xxxx/站点1另一个是注册的域名,www.mysite.com。
最初,我只有我的/etc/apache/sites-available/default文件可用,但当我尝试加载上述任一网站时,我得到的只是/var/www/index.html输出。
我使用以下代码为 mysite.com 添加了一个新的虚拟主机:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/mysite
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/mysite>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Mysite.com 仅在默认禁用时加载,但是,xxxx/站点1没有。
因此,我启用了具有以下代码的默认虚拟主机:
<VirtualHost *: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>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
现在,xxxx/站点1有效,但是我的站点不会 - 相反,它会加载/var/www/index.html页。
我不知道问题是什么。希望得到帮助。
答案1
为了使虚拟域正常工作,它需要知道要映射到哪个主机。在浏览器的 http 请求中,它会设置一个 Host 标头,例如
Host: mysite.com
因此 apache 将读取该内容以确定要使用哪个 vhost 条目。您需要添加类似以下内容的内容
ServerName mysite.com www.mysite.com
到 mysite.com 虚拟主机<VirtualHost *:80>