从外部LAN访问本地虚拟主机作为虚拟主机,如http:// sitename而不是http:// systemname / sitename

时间:2010-11-03 06:35:19

标签: apache virtualhost

我正在开发一个由两个人管理的网站。一个是我,另一个是设计师从LAN上的不同机器访问。

Conf:php,apache,windows xp,mysql。

文档根目录:d:\ www \ xampp \ htdocs。所有项目都在此作为子文件夹。

我已经设置了虚拟主机,因此我不会像http://localhost/foldername一样访问所有项目,而是http://foldername

但对于在其他系统中的设计师,他必须访问http://computername/foldername

例如,让我在项目工资单中工作。我将以http://payroll的形式访问该广告素材,但我的设计师会将其作为http://computername/payroll访问。

我想要做的是我希望设计师以我访问的方式访问。那是http://payroll

因此,在设计器系统中,当服务器名称为payroll时,我希望将其定向到我的机器,然后定向到项目文件夹。所以,如果他给出http://payroll,那么我系统中的应用程序应该为他运行。

我在设计器系统中设置了hosts文件以指向我的机器。所以这项工作已经完成,当他提供工资单时,http://localhost正在出现。

我应该怎么做才能让设计师可以像http://payroll一样从他的系统中访问我的项目?

2 个答案:

答案 0 :(得分:7)

设计人员必须将每个sitename的IP地址添加到他的hosts file,因为没有它,浏览器将无法知道在哪里查找该网站。它看起来像这样:

12.34.56.78 sitename1
12.34.56.78 sitename2
12.34.56.78 repeat.for.each.sitename
...

如果您的VirtualHost未绑定到特定IP地址,这可能就足够了。这不起作用:

NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1:80>
    ServerName sitename1
    ...
</VirtualHost>

应该是:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName sitename1
    ...
</VirtualHost>

这样,只要apache看到主机名为sitename的请求,就会为名为sitename的网站提供服务,如果它来自同一台计算机则无关紧要。

答案 1 :(得分:1)

他可以放入他的\ windows \ system32 \ drivers \ etc \ hosts文件:


1.2.3.4 payroll

1.2.3.4应替换为系统的IP号。

启用Apache站点的\ 000-default文件应以:

开头

<VirtualHost *:80>
        # from http://www.iliveinperego.com/2008/05/automatic-vhost-with-apache/
        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^(.+)$
        RewriteRule ^(.+)$ /%1$1
  ...
</VirtualHost>