因此我创建了一个非常简单的网站,其中仅包含带有文本“welcome”的index.html。该网站的虚拟主机如下:
ServerAdmin [email protected]
ServerName name.com
ServerAlias www.name.com
DocumentRoot /var/www/name.com/public_html
这很好用。然后我创建了另一个包含www1.name.com
文本的网站www1
。
我做的几乎一样,我创建一个文件夹/var/www1/name.com/public_html
,在index.html
其中复制上一个文件并进行更改
ServerAlias www1.name.com
DocumentRoot /var/www1/name.com/public_html
但当我访问 www1.name.com 时,我看到的是“Welcome”而不是“www1”。有人能帮我解决这个问题吗?
是的,我总是a2ensite/a2dissite
这么做service apache2 restart
答案1
假设VirtualHost
标签没有问题。这可能是因为ServerAlias
如果没有,则不使用。在第二个中更改为ServerName
后重试。ServerAlias
ServerName
VirtualHost
一个很好的提醒是设置ServerName
名字并用于ServerAlias
任何其他别名。
不过,如果您要使用另一个目录(/var/www 之外),请注意权限设置是否正确。此外,如果SELinux
使用,需要为该目录设置适当的上下文。但除非您自行启用,否则这不是问题SELinux
。
答案2
澄清几个基本点:
在 Ubuntu 中,
/var/www
是必须存储用户 Web 内容的默认目录。它/etc/apache2/apache2.conf
由以下指令定义到全局 Apache 配置文件中:<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
VirtualHost 的名称与其目录名称之间没有直接联系
DocumentRoot
。当该指令
ServerName
被放入其定义中 - 标签之间时,它定义通用服务器的名称或某个 VirtualHost 的名称<VirtualHost>
。为了有效的管理VHs,通常每个单独的VirtualHost的定义都放在单独的配置文件中。
ServerName
每个 VirtualHost 都需要该指令。该指令
ServerAlias
不是必需的。我们可以将其视为可以输入一个或多个 同义词的地方ServerName
。
根据这些观点,我的建议如下:
创建两个位于的单独目录
/var/www
,如问题中的示例所示,它们可以是:sudo mkdir -p /var/www/www.name.com/public_html sudo mkdir -p /var/www/www1.name.com/public_html
为第一个 VirtualHost 创建配置文件:
sudo nano /etc/apache2/sites-available/www.name.com.conf
其内容应类似如下形式:
<VirtualHost *:80> ServerName www.name.com ServerAlias name.com ServerAdmin [email protected] DocumentRoot /var/www/www.name.com/public_html <Directory /var/www/www.name.com/public_html> Options None FollowSymLinks # Enable .htaccess Overrides: AllowOverride All DirectoryIndex index.html index.php Order allow,deny Allow from all Require all granted </Directory> </VirtualHost>
为第二个 VirtualHost 创建配置文件:
sudo nano /etc/apache2/sites-available/www1.name.com.conf
其内容应类似如下形式:
<VirtualHost *:80> ServerName www1.name.com ServerAdmin [email protected] DocumentRoot /var/www/www1.name.com/public_html <Directory /var/www/www1.name.com/public_html> Options None FollowSymLinks # Enable .htaccess Overrides: AllowOverride All DirectoryIndex index.html index.php Order allow,deny Allow from all Require all granted </Directory> </VirtualHost>
如果需要,请禁用所有现有的VirtualHost的配置:
sudo a2dissite "*.conf"
。启用新的配置文件:
sudo a2ensite www.name.com.conf www1.name.com.conf
重新启动Apache:
Ubuntu 14.04:
sudo service apache2 restart
Ubuntu 16.04:
sudo systemctl restart apache2.service
将一些index.html页面放入
public_html/
文件夹中,并尝试通过浏览器访问这两个域(http://www...
和)。http://www1...