访问具有虚拟主机的服务器apache
问题描述:
我有一台安装了lampp的云服务器。我曾在这里配置了虚拟主机这样的:访问具有虚拟主机的服务器apache
<VirtualHost xx.xxx.xx.xxx:80>
DocumentRoot "/opt/lampp/htdocs/folder/"
ServerName www.xxx.com
</VirtualHost>
和一切工作,因为我想到,如果我去www.xxx.com我看到我的“文件夹”的网站。
现在我需要工作到同一台服务器上的另一个站点,但它并没有一个域,所以我想(通过阅读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我到了“文件夹”网站,而如果我做http://xx.xxx.xx.xxx:80/test而在到达“测试”的网站,我仍然达到www.xxx.com,为什么呢?我怎么能达到这个目标?
答
首先定义的虚拟主机(最上面)用作默认主机。用于响应请求中的特定主机名匹配的任何传入请求而不是。
你想尝试这种设置:
# 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
代表了系统公共和路由的IPv4地址)
在你的文件系统,你有这样的层次:
/opt/lampp/htdocs/
_default/
test1/
test2/
example.com/
这样请求http://example.com
或http://www.example.com
被映射到文件夹/opt/lampp/htdocs/example.com
,请求URL为任何其他主机名称为默认文件夹/opt/lampp/htdocs/_default
,您现在可以在其中为不同的应用程序创建任意数量的子文件夹。
另一种方法是在现有域名下面使用其他主机名进行内部测试,所以类似test1.example.com
或类似名称。这样您就不必使用原始IP地址来承担路由风险。
完美而准确的答案,一切正常 – mautrok