如何在 VPS 上的不同文件夹中托管多个网站?

How to host multiple websites on different folders on a VPS?

我有一个 domain1.com 指向我的 VPS 服务器(我刚刚在 A 条目中指定了 IP 地址)。更具体地说,domain1.com 指向我的 VPS.

的文件夹 /var/www/html

我想在此 VPS 上托管另一个网站,域名为:domain2.com

我的想法是新建一个目录:/var/www/html2,把新网站的代码放在里面,然后重定向domain2.com到这个文件夹。

但是,我不知道如何通过添加 A (DNS) 条目来做到这一点。另外,没有解决方案可以使用 .htaccess 吗?

根据它的声音,您可能已经为 domain1.com 配置了主服务器配置。如果您只在您的服务器上托管 1 个站点,这没问题,但如果您托管多个网站(不同的域),那么您需要配置 虚拟主机 。一个用于 domain1.com,另一个用于 domain2.com,等等

您可能已经将 domain1.com 的必要指令(即 ServerNameDocumentRoot 等)直接放在主服务器配置中,这些需要移动到<VirtualHost> 改为容器。

例如:

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Require all granted
        # Enable .htaccess overrides if required
        AllowOverride All
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /var/www/html2

    <Directory /var/www/html2>
        Require all granted
        # Enable .htaccess overrides if required
        AllowOverride All
    </Directory>
</VirtualHost>

为两个域添加相同的 A 记录。 (您可能也想对 www 子域执行相同的操作,或者创建一个 CNAME 记录。)所以两个域都指向相同的 IP 地址(即您的服务器)。然后,Apache 可以通过将请求 (HTTP 1.1) 上的 Host header 与 ServerName(或 ServerAlias)指令进行比较来确定将请求路由到哪个虚拟主机 <VirtualHost> 容器。

通常将 <VirtualHost> 容器放在一个单独的 .conf 文件中,该文件稍后 包含在 主服务器配置中,使用 Include指令。

参考:


更新:

Also, is there not a solution to work with .htaccess ?

您没有使用 .htaccess 实现虚拟主机。使用 .htaccess 你可以重写 URL 这样你就可以模拟类似的东西(使用一个为多个域服务的虚拟主机)但是这不是必需的,如果你是托管完全独立的网站。