我已经在我的家庭网络服务器上配置了 apache;到目前为止,我只在其上运行了一个网站,并且它运行完美:我只需在浏览器中输入我的主机名,我的本地网站就会显示出来。
现在我需要运行多个网站,因此我在/var/www
文件夹中创建了多个子目录。我想继续访问它们,输入我的主机名,然后/
输入子文件夹的名称。我尝试配置不同的虚拟主机,并向每个虚拟主机添加以下代码行:
ServerName hostname/site1
DocumentRoot /var/www/site1
但每当我输入时,hostname/site1
我都会得到 apache 错误页面而不是的主页site1
。
我是否遗漏了其他配置行?
更新
我删除了新的配置行,并将配置文件恢复为默认状态,因为这应该会自动工作而无需任何特殊配置。hostname/site1
但我仍然无法通过键入来访问子文件夹。
答案1
这服务器名称指令仅用于包含主机名和端口。指向子目录的斜杠不是主机名的一部分。
在您的示例中,我假设您可能在 处有/var/www/site2
以及/var/www/site1
。 对于该实现,您可能希望拥有:
ServerName hostname
DocumentRoot /var/www
然后你就可以http://hostname/site1
访问http://hostname/site2
要获取子域名,你可能需要查看基于名称的虚拟主机。通常,这涉及诸如 subdomain.hostname 之类的内容,即 test.example.org 可能指向 /var/wwwtest 和 prod.example.org 可能位于 /var/wwwprod。通常,您需要确保子域位于不同的路径中,这样您就无法从另一个站点访问一个站点。
先前的这个问题有一个示例实现:配置 Apache 通过 HTTP + HTTPS 为多个子域提供服务
答案2
虚拟主机仅在设置多个域名(或子域名)时才有用。如果您希望通过同一个地址访问您的网站,则可能需要设置Alias
。此外,如果您的 Web 服务器根文件夹指向/var/www
,则无需进行任何配置:只需将您的网页放在子目录中,例如,drupal
应允许它们被访问your.domain.name/drupal