【问题标题】:Apache 2.2 multiple VirtualHostsApache 2.2 多个虚拟主机
【发布时间】:2013-05-22 21:55:38
【问题描述】:

我有几个 PHP 和 python 项目在 apache 2.2 下运行。

在我的 httpd.conf 文件中:

DocumentRoot "/var/www/html"

NameVirtualHost xx.my.ip.xxx:80
...


# Virtual host for xx project
<VirtualHost xx.my.ip.xxx:80>
    ...
    DocumentRoot /var/www/html/xx.com
    ServerName xx-project.com
</VirtualHost>

...

通过服务器名称(xx-project.com)访问时, [/var/www/html/xx.com] 用作 DocumentRoot 没有任何问题。

但是我在 [/var/www/html] 下添加了一个新项目。由于我还没有此项目的服务器名称,我尝试使用 xx.my.ip.xxx:80/mynewprojectPath... 访问它,但 [/var/www/html/xx.com] 被用作 DocumentRoot。

有什么想法吗?

感谢您的阅读

【问题讨论】:

    标签: apache virtualhost document-root


    【解决方案1】:

    我会使用一个临时的 NameServer(比如 yy-project.com)并覆盖您的服务器和开发人员机器中的 /etc/hosts 文件。这样您就可以指定第二个 VirtualHost 并开始测试您的应用程序。当您获得第二个域时,您只需在 VirtualHost 中替换它并删除 /etc/hosts 文件中的行。

    (已编辑)

    临时虚拟主机:

    <VirtualHost *:80>
    ServerName yy-project.com
    ErrorLog /var/log/apache2/yy-project_error.log
    TransferLog /var/log/apache2/ryy-project_access.log
    LogLevel warn
    DocumentRoot /var/www/html/yy.com
    ....
    </VirtualHost>
    

    在服务器的 /etc/hosts 文件中添加这一行:

    127.0.0.1   yy-project.com
    

    并将其添加到客户端计算机的 /etc/hosts 文件中:

    IP_OF_THE_SERVER yy-project.com
    

    【讨论】:

    • 其实我有很多虚拟主机。他们每个人都拥有自己的服务器名称。在我的 /etc/hosts 中,我只有: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 .. 没有想法?
    • 然后您应该添加一个新的 VirtualHost,其服务器名称为 yy-project.com,并将以下行添加到 /etc/hosts:服务器中的“127.0.1.1 yy-project.com”和“SERVER_IP” yy-project.com”在您的开发机器中。这样,当您将浏览器指向 yy.project.com 时,请愿书将到达您的服务器,新的 VirtualHost 将在那里处理它。在那里你可以改变你的 DocumentRoot
    • 抱歉延迟回复。你的方法就像一个魅力!谢谢 !你能发布一个内容相同的答案吗(用于验证)
    • 你去。抱歉耽搁了,我才看到。
    猜你喜欢
    • 2010-10-21
    • 2011-07-31
    • 2010-11-02
    • 1970-01-01
    • 2011-03-19
    • 2015-09-14
    • 2015-12-03
    • 2013-01-13
    • 2010-10-23
    相关资源
    最近更新 更多