使用XAMPP托管多个本地站点

39

我刚开始使用XAMPP,这对一些人来说可能很简单。

我有几个PHP项目,希望能够在本地进行调试并在浏览器中查看(不是同时进行,而是不必每次想要处理不同项目时更改配置文件/复制项目文件夹)。

在IIS上,您可以设置多个站点以从计算机提供服务,并且我正在寻找类似于XAMPP的东西。在使用IIS时,我向Windows hosts文件添加了多个记录,以便通过键入友好的Web风格地址(如http://myproject1.dev)访问本地托管站点

谢谢。

3个回答

71

Greg,你已经接近成功了--你需要(就像Moses说的那样)设置虚拟主机。

所以如果你的Windows hosts文件包含:

127.0.0.1    localhost
127.0.0.1    mysite-dev.com
127.0.0.1    anothersite-dev.com

你的虚拟主机文件(httpd-vhosts.conf)可能如下所示:

<VirtualHost *:80>
  DocumentRoot C:/xampp/htdocs/
  ServerName localhost
</VirtualHost>

<VirtualHost *:80>

    ServerName mysite-dev.com

    DocumentRoot "C:/sites/mysite-dev"

    <Directory "C:/sites/mysite-dev">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

<VirtualHost *:80>

    ServerName anothersite-dev.com

    DocumentRoot "C:/sites/anothersite-dev"

    <Directory "C:/sites/anothersite-dev">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

在进行任何更改后,请不要忘记重新启动Web服务器。


1
+1 提到了 hosts 文件。我忘记了,一直在想如何处理所有这些虚拟主机.. :) - user529141
13
+1,请注意自Apache 2.4版本起,你需要使用Require all granted代替Order allow,deny Allow from all - https://dev59.com/e2Ml5IYBdhLWcg3wcmvD#19588786 - pzmarzly

7
这个问题已经被问了将近十年,上面的答案有点过时。请注意,XAMPP在安装时提供了一个关于虚拟主机的"How-To"指南,可以从控制面板中找到。
从"欢迎使用XAMPP for Windows"页面(localhost/dashboard,默认情况下加载本地主机时)点击顶部菜单栏中的"如何操作"指南。从那里,找到链接"配置虚拟主机",它将引导您到本地主机页面 "http://localhost/dashboard/docs/configure-vhosts.html"
简而言之,该过程涉及编辑"httpd-vhosts.conf"文件(通常位于C:\XAMPP\apache\conf\extra),并用以下内容替换该文件的内容:
<VirtualHost *:80>
        DocumentRoot "C:/xampp/htdocs/"
        ServerName localhost
</VirtualHost>

# vhosts - note sample entry from XAMPP how-to throws an error, so try this:
<VirtualHost *:80>
        DocumentRoot "C:/Users/jdoe/Documents/dev.mysite.com/htdocs"
        ServerName mysite.local
        <Directory "C:/Users/jdoe/Documents/dev.mysite.com/htdocs">
            Require all granted
            Options Indexes FollowSymLinks
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
</VirtualHost>

可以通过克隆条目并修改DocumentRoot和ServerName指令以及端口号(例如TLS(SSL)的443)来获得其他虚拟主机(包括SSL主机)。如果您想走这条路,您可以在网上找到有关创建和签署自己证书的tutorials

最后一步是让您的Windows计算机将浏览器指向您的虚拟域的Apache主机(例如上面的http://mysite.local)。使用文本编辑器(记事本即可)作为管理员将以下条目附加到您的hosts文件中,该文件位于此处:

C:\Windows\System32\drivers\etc\hosts

将此条目附加到hosts文件中:
127.0.0.1           mysite.local

重要提示 - 您必须重新启动Windows计算机,否则新主机将无法响应。有些文档会告诉您只需重新启动浏览器和Apache服务器,但我发现这是不够的。

根据我的经验,主机系统和Apache指令可能比较特殊,因此请耐心等待。您可能需要多次重建配置文件、重新启动Apache和计算机。


5
我希望提供最新的信息。XAMMP默认使用80端口,我们只能发布一个网站。我也使用IIS进行.Net项目开发。因此,我将XAMMP的端口设置为除80端口以外的其他端口,以避免冲突。
当我们想要发布多个网站时,需要执行以下操作来修改httpd.conf文件(这是当前的名称):
1. 设置端口
在httpd.conf文件中找到#Listen表达式。 将Listen 80更改为Listen 8000(或任何其他您想要的端口)。
Listen 8000

如果您需要3个不同的网站,请按以下方式输入其他内容,包括每行1个定义。
Listen 8001
Listen 8002
Listen 8003

2.定义通过端口访问的站点的文件路径

再次在httpd.conf文件中查找。 按以下方式识别每个网站的文件夹。 正如您所看到的,我在XAMMP目录的htdocs目录下创建了3个名为8000、8001、8002和8003的目录。

<VirtualHost *:8000>
 DocumentRoot "C:\XAMPP\htdocs\8000"
 ServerName localhost:8000
<\ VirtualHost>
<VirtualHost *:8001>
 DocumentRoot "C:\XAMPP\htdocs\8001"
 ServerName localhost:8001
<\ VirtualHost>
<VirtualHost *:8002>
 DocumentRoot "C:\XAMPP\htdocs\8002"
 ServerName localhost:8002
<\ VirtualHost>
<VirtualHost *:8003>
 DocumentRoot "C:\XAMPP\htdocs\8003"
 ServerName localhost:8003
<\ VirtualHost>

重新启动您的XAMMP上的Apache服务器。 现在,您可以查看您的第三个站点,例如 http://localhost:8003http://192.168.1.1:8003/。 希望对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接