非常新,关于这方面的一切。虚拟主机

非常新,关于这方面的一切。虚拟主机

我有一个非常低级的问题。我有几个域名,想把它们托管在我已经设置的虚拟服务器上。服务器运行良好,但是我在虚拟托管部分遇到了问题。当我只有一个域名启动并运行时,一切都运行正常,但现在我试图添加其他网站,却遇到了障碍。

当我通过终端登录时出现此信息:

<VirtualHost *:80>

        ServerName www.mydomain1.com
        DocumentRoot /www/public_html/mydomain1.com/index.php

</virtualHost>

<VirtualHost *:80>

        ServerName www.mydomain2.com
        DocumentRoot /www/public_html/mydomain2.com/index.php

</virtualHost>

现在我遇到麻烦时尝试修改这些。我现在的问题是,我已经尝试了很多方法来启动和运行,我无法回到一切正常时的最初状态。

答案1

尝试将其放在NameVirtualHost *:80文件的开头。

index.php从两条线中删除DocumentRoot

然后运行apache2ctl restart。尝试访问网站,如果出现 404 错误,请将其附加index.php到浏览器地址栏中的 URL。

答案2

在缺乏更多细节的情况下,我同意 fuscata 的建议(添加 NameVirtualHost 指令并修复损坏的 DocumentRoot 指令)。

为了让您更深入地了解基于名称的虚拟主机设置,下面简要介绍一下它的工作原理。当您将“NameVirtualHost *:80”添加到 Apache 配置时,您就是在告诉 Apache 检查 HTTP 请求中的主机标头,以确定要将哪组配置应用于特定请求。这个想法是,您可以将许多站点绑定到同一个 IP(或多个 IP)。

虚拟主机容器中的 ServerName 指令将定义一组基于主机名的配置,这些配置取决于请求中传递到 Host: 标头的值。例如,对于上面的域 www.mydomain2.com,您可以有类似以下内容:

    <VirtualHost *:80>
        ServerName www.mydomain2.com
        ServerAlias mydomain2.com
        DocumentRoot /www/public_html/mydomain2.com/
        DirectoryIndex index.php index.html
    </virtualHost>

...其中 DocumentRoot 指向表示与站点关联的文档的根级别的目录,ServerAlias 表示表达主机名的替代方式(例如,mydomain2.com,减去“www”)。DirectoryIndex 指令定义应为“/”或无根级别 URI 访问哪些文件 - 例如,http://www.mydomain2.com

综上所述,如果这是一个面向公众的网站,我强烈建议您花时间了解 Apache 的工作原理,以及如何建立并运行一个合适的配置。从长远来看,这将对您有所帮助,并帮助您避免安全问题和其他问题。

相关内容