访问具有 virtualhost 的服务器 apache

access to a server apache that has virtualhost

我有一个安装了 lampp 的云服务器。我在这里配置了一个虚拟主机:

<VirtualHost xx.xxx.xx.xxx:80>
    DocumentRoot "/opt/lampp/htdocs/folder/"
    ServerName www.xxx.com
</VirtualHost>

一切都如我所料,如果我去 www.xxx.com 我会看到我的 'folder' 网站。
现在我需要在同一台服务器上的另一个站点上工作,但它还没有域,所以我想象(通过阅读 apache 的配置文件解释)我必须这样做:

<VirtualHost xx.xxx.xx.xxx:80>
    DocumentRoot "/opt/lampp/htdocs/folder/"
    ServerName www.xxx.com
</VirtualHost>
<VirtualHost xx.xxx.xx.xxx:80/test>
    DocumentRoot "/opt/lampp/htdocs/test/"
</VirtualHost>

但它不起作用,如果我 http://xx.xxx.xx.xxx:80 i reach the 'folder' site while if i do http://xx.xxx.xx.xxx:80/test 而不是到达 'test' 站点我仍然到达 www.xxx.com,为什么?我怎样才能达到这个 objective?

最先定义的虚拟主机(最上面)充当默认主机。该请求用于响应与请求中的特定主机名 匹配的任何传入请求。

您想试试这个设置:

# some fallback host for testing and development
<VirtualHost xx.xxx.xx.xxx:80>
    DocumentRoot "/opt/lampp/htdocs/_default"
</VirtualHost>
# a virtual host with a specific host name
<VirtualHost xx.xxx.xx.xxx:80>
    DocumentRoot "/opt/lampp/htdocs/example.com"
    ServerName example.com
    ServerAlias www.example.com
</VirtualHost>

(这里xx.xxx.xx.xxx代表系统public和可路由的IPV4地址)

在您的文件系统中,您具有以下层次结构:

/opt/lampp/htdocs/
                  _default/
                           test1/
                           test2/
                  example.com/

通过这种方式,对 http://example.comhttp://www.example.com 的请求映射到文件夹 /opt/lampp/htdocs/example.com,对具有 任何其他 主机名的 URL 的请求映射到默认文件夹 /opt/lampp/htdocs/_default,您现在可以在其中为不同的应用程序创建任意数量的子文件夹。

另一种方法是使用现有域名下方的其他主机名进行内部测试,例如 test1.example.com 或类似名称。这样您就不必使用带有路由风险的原始 IP 地址。