注意:我的虚拟主机条目中的ServerName显然存在冲突,我需要对/ etc / hosts文件进行一些更改 . 展望这一点,但任何见解都表示赞赏 . 谢谢
=======================================
(注意我用hxxp://替换了http://以允许stackoverflow让我发布这个)
我有一台服务器,10.1.1.1,我将在子目录中托管多个WordPress安装 . 服务器上的规格:
操作系统: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 /
[/虚拟主机]
-
我检查了httpd(httpd -t)的语法,sytax没问题
-
我重启了httpd
如果我尝试访问hxxp://10.1.1.1/site_two,它会给我一个404并且error_log报告它在/ var / www / sites / sites_one / site_two /中找到该文件...显然我想要它不看那里,但在/ var / www / sites / site_two / ...我做错了什么?感谢您的帮助!
1 回答
请参阅Apache文档 . http://httpd.apache.org/docs/2.2/vhosts/name-based.html
您正在尝试使用基于名称的虚拟主机,因为您只有一个IP地址 . 这很好,但你错过了DNS工作原理的一部分 . 从文档中:“您只需配置DNS服务器以将每个主机名映射到正确的IP地址,然后配置Apache HTTP Server以识别不同的主机名 . ”
第一个列出的虚拟主机始终是默认主机 . 这就是为什么你的site_one将按照你想象的那样行事,但是当你试图访问site_two时,它属于默认的虚拟主机 . 您对虚拟主机的工作原理有错误的想法 . 您尝试做的事情可以使用别名来完成,但是如果您的代码中的任何地方引用了文档根目录,则必须跟踪它所指的是哪个站点 .
例如 . 在PHP代码中是这样的: