0

注意:显然我的虚拟主机条目中的 ServerName 存在冲突,我需要对我的 /etc/hosts 文件进行一些更改。对此进行调查,但任何见解都值得赞赏。谢谢

========================================

(请注意,我将 http:// 替换为 hxxp:// 以允许 stackoverflow 让我发布此内容)

我有一个服务器,10.1.1.1,我将在子目录中托管多个 WordPress 安装。服务器规格:

操作系统:RHEL 6.2 Santiago Apache 版本:Apache/2.2.15 (Unix) PHP 版本:5.3.9 MySQL 版本 5.5.20

我想从虚拟目录 site_one(即 hxxp://10.1.1.1/site_one)运行第一个 WordPress 安装——该站点的代码位于 /var/www/sites/site_one

我想从虚拟目录site_two(即hxxp://10.1.1.1/site_two)运行第二个WordPress安装——这个站点的代码是驻留在/var/www/sites/site_two

我还在 /var/www/sites 中删除了一个虚拟的 hello world index.html 文件

--

我对我的 httpd.conf 进行了以下更改:

  1. 整个站点的 DocumentRoot 设置为 /var/www/sites 即:

    DocumentRoot "/var/www/sites"

  2. 在 httpd.conf 的最底部,我有以下 VirtualHost 指令(我将 < 和 > 替换为 [ ] 因为我无法让堆栈溢出以输出 < blocks >:

    NameVirtualHost *:80
    [VirtualHost *:80]
    ServerName 10.1.1.1
    DocumentRoot /var/www/sites/site_one
    Alias /site_one /var/www/sites/site_one/
    [/VirtualHost]

    [VirtualHost *:80]
    ServerName 10.1.1.1
    DocumentRoot /var/www/sites/site_two
    别名 /site_two /var/www/sites/site_two/
    [/VirtualHost]

    • 我检查了 httpd (httpd -t) 的语法,并且语法没问题
    • 我重新启动httpd

--

如果我尝试访问 hxxp://10.1.1.1/site_two 它会给我一个 404 并且 error_log 报告它正在 /var/www/sites/sites_one/site_two/ 中查找文件......显然我希望它不看那里,而是在 /var/www/sites/site_two/ ...我做错了什么?感谢您的任何帮助!

4

1 回答 1

1

请参阅 Apache 文档。http://httpd.apache.org/docs/2.2/vhosts/name-based.html

您正在尝试使用基于名称的虚拟主机,因为您只有一个 IP 地址。这很好,但你错过了它如何工作的 DNS 部分。从文档中:“您只需配置 DNS 服务器以将每个主机名映射到正确的 IP 地址,然后配置 Apache HTTP 服务器以识别不同的主机名。”

第一个列出的虚拟主机始终是默认主机。这就是为什么您的 site_one 将按照您“认为”的方式行事,但是当您尝试访问 site_two 时,它属于默认虚拟主机。您对虚拟主机的工作方式有错误的想法。您尝试做的事情可以使用别名来完成,但是如果您在代码中的任何地方引用文档根目录,则必须跟进您所指的站点。

例如在 PHP 代码中是这样的:

require($_SERVER['DOCUMENT_ROOT']."/site_one/directory/to/wherever
于 2012-06-19T13:50:42.173 回答