注意:我的虚拟主机条目中的ServerName显然存在冲突,我需要对/ etc / hosts文件进行一些更改。展望这一点,但任何见解都表示赞赏。感谢
=======================================
(注意我用hxxp://替换了http://以允许stackoverflow让我发布这个)
我有一台服务器,10.1.1.1,我将在子目录中托管多个WordPress安装。服务器上的规范:
OS:RHEL 6.2 Santiago Apache版本:Apache / 2.2.15(Unix) PHP版本:5.3.9 MySQL版本5.5.20
第一个WordPress安装我想从虚拟目录site_one(即hxxp://10.1.1.1/site_one)运行 - 该站点的代码将驻留在/ var / www / sites / site_one
第二个WordPress安装我想从虚拟目录site_two(即hxxp://10.1.1.1/site_two)运行 - 该站点的代码将驻留在/ var / www / sites / site_two
我还在/ var / www / sites
中删除了一个虚拟的hello world index.html文件-
我对httpd.conf进行了以下更改:
整个网站的DocumentRoot设置为/ var / www / sites ie。:
DocumentRoot“/ var / www / sites”
在httpd.conf的最底部我有以下VirtualHost指令(我用[]替换了<和>因为我无法将堆栈溢出输出到< blocks>:
NameVirtualHost *:80
[VirtualHost *:80]
ServerName 10.1.1.1
DocumentRoot / var / www / sites / site_one
别名/ site_one / var / www / sites / site_one /
[/虚拟主机]
[VirtualHost *:80]
ServerName 10.1.1.1
DocumentRoot / var / www / sites / site_two
Alias / site_two / var / www / sites / site_two /
[/虚拟主机]
-
如果我尝试访问hxxp://10.1.1.1/site_two,它会给我一个404并且error_log报告它正在查找/ var / www / sites / sites_one / site_two /中的文件...显然我希望它不要在那里看,但在/ var / www / sites / site_two / ...我做错了什么?感谢您的帮助!
答案 0 :(得分:1)
请参阅Apache文档。 http://httpd.apache.org/docs/2.2/vhosts/name-based.html
您正在尝试使用基于名称的虚拟主机,因为您只有一个IP地址。这很好,但你错过了DNS工作原理的一部分。从文档中:“您只需配置DNS服务器以将每个主机名映射到正确的IP地址,然后配置Apache HTTP Server以识别不同的主机名。”
第一个列出的虚拟主机始终是默认主机。这就是为什么你的site_one将按照你想象的那样行事,但是当你尝试访问site_two时,它属于默认的虚拟主机。 您对虚拟主机的工作原理有错误的想法。您尝试做的事情可以使用别名来完成,但是如果您的代码中的任何地方引用了文档根目录,则必须跟踪它所指的是哪个站点。
E.g。在PHP代码中是这样的:
require($_SERVER['DOCUMENT_ROOT']."/site_one/directory/to/wherever