首页 文章

404与VirtualHost和Subdirectories与Apache(httpd)

提问于
浏览
0

注意:我的虚拟主机条目中的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 回答

  • 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代码中是这样的:

    require($_SERVER['DOCUMENT_ROOT']."/site_one/directory/to/wherever
    

相关问题