如何在XAMPP上设置Apache虚拟主机(Windows)

问题描述 投票:34回答:4

这个标签在哪里?

我在哪里可以找到vhosts文件?

我在文档中找不到它。

<VirtualHost hostname:80>
   ...
   SetEnv NS_ENV variable_value
   ...
</VirtualHost>
apache xampp wamp
4个回答
93
投票

在XAMPP / WAMP上制作VHOST(虚拟主机)的完整指南

注意:首先,XAMPP和WAMP或Windows的其他Apache软件包之间的唯一区别是,问题是计算机上安装这些软件包的位置。

简介:vhost(虚拟主机)是一个很好的解决方案,如果您打算在php中开发许多独立项目并使它们彼此隔离,例如:

  • 项目1基于PHP并具有本地URL地址php.localhost
  • 项目2是一个带有网址laravel.localhost的Laravel项目
  • 项目3是一个带有网址codeigniter.locathost的Codeigniter
  • Project 4是一个带有url wordpress.locathost的WordPress

您应该已经安装了最新版本的XAMPP / WAMP。顺便说一下,就我而言,我只安装了Apache和MySQL。

*注意:默认情况下,大多数Web服务器将使用端口80作为默认端口,在某些情况下,如果您安装了另一个Web服务器(Microsoft IIS),它也使用端口80或者在其他情况下SKYPE也有时使用端口80就像某些用户在Windows 8/10中的情况一样,在这种情况下你可以做两件事

  • 将您的Apache端口更改为端口80808081等或其他一些空闲端口(注意:8080有时也会出现一些问题)
  • 或者更改您的其他软件/ IIS端口并在Skype的情况下将Apache保持默认端口80,只需终止Skype应用并在端口80上安装Apache后重新启动它,Skype将自动获得新端口。

我选择将Apache更改为端口8080。

注意: - 对于下一节,我们需要使用文本编辑器,如记事本或常规IDE。我使用了崇高的文本编辑器。 - 如果将Apache保留为默认端口80,请跳过此部分并转到虚拟主机

如果保留默认值,则更改XAMPP / WAMP端口(仅在必要时),然后跳转到设置虚拟主机

步骤1.编辑httpd.conf

单击配置 - > Apache(httpd.conf)或者您在此处找到C:\XAMPP\apache\conf\httpd.confC:\XAMPP\apache2\conf\httpd.confC:\Bitnami\wampstack\apache\conf\httpd.confC:\Bitnami\wampstack\apache2\conf\httpd.conf或类似位置的文件。

改变行

Listen 80

到8080或其他,免费端口。

Listen 8080

虽然我们打开httpd.conf文件,但我们需要确保包括httpd-vhosts.conf:包括conf/extra/httpd-vhosts.conf

虚拟主机

注意:默认情况下,服务器文档位于C:\XAMPP\htdocsC:\Bitnami\wampstack\apache2\htdocs上,如果您只有一个项目或许多小测试文件,那就没问题。但是,如果您需要开发许多项目,那么建议通过虚拟主机将它们分开,如前所述。

步骤2.设置虚拟主机

  1. 为您的项目创建一个文件夹;我在c:\vhost创建了一个你可以称之为项目等。
  2. c:\vhost文件夹中我们创建一个子文件夹domain1或project1或任何其他,它取决于你(c:\vhost\project1
  3. 打开httpd-vhosts.conf文件C:\XAMPP\apache\conf\extra\httpd-vhosts.conf根据您要创建的vhost数量,添加以下代码:
<Directory C:/vhost>
    AllowOverride All
    Require all granted
</Directory>

#this is the default address of XAMPP    
<VirtualHost *:8080>
    DocumentRoot "C:/XAMPP/htdocs/"
    ServerName localhost
</VirtualHost>

#this is the first vhost address in XAMPP
<VirtualHost *:8080>
    DocumentRoot "C:/vhost/project1/"
    ServerName php.localhost
    SetEnv NS_ENV variable_value
</VirtualHost>

#this is the second vhost address in XAMPP for project like Laravel
<VirtualHost *:8080>
    DocumentRoot "C:/vhost/Laravel-Blog/public"
    ServerName laravel.localhost
</VirtualHost>

etc

注意:如果您使用Laravel项目,您可以创建无限的Laravel项目以及其他框架,如codeigniter,Yii等,关键是要在c:\vhost\laravel1c:\vhost\laravel2等上使用Laravel项目,并将c:\vhost\laravel1\public设为DocumentRoot等,如图所示之前。每个Laravel项目都有自己的VirtualHost URL。

保存并关闭文件

一些额外的信息和说明:

  • 如果端口保持默认值80,则URL地址将为localhost
  • 如果port保持默认值80,则VirtualHost标记应更改为<VirtualHost *:80>
  • 如果port更改为8080,则URL地址将为localhost:8080
  • 并且vhost URL地址可能看起来像这个project1.localhost:8080
  • 您可以像这样添加无限的项目和虚拟主机。

我们尚未准备好,请阅读更多内容。

步骤3.编辑Windows主机文件

  1. 从XAMPP / WAMP停止Apache和MySQL服务。
  2. C:\windows\system32\drivers\etc中打开hosts文件,您需要管理员权限才能编辑该文件。我建议用Sublime文本编辑器直接编辑文件。
  3. 在文件末尾添加127.0.0.1 project1.localhost,保存并关闭文件。
127.0.0.1       localhost
127.0.0.1       php.localhost
127.0.0.1       laravel.localhost
127.0.0.1       codeigniter.localhost
127.0.0.1       wordpress.localhost
127.0.0.1       laravel2.localhost
etc. those are just examples

保存文件

最后一步。再次启动/重新启动Apache和MySQL。


Addition (Suggestion)

注意:在您的开发过程中,您可能会遇到缓存问题,因为您可能会冒险更新Laravel中的某些内容并且它不会出现在您的浏览器中。因此,您可能需要在本地环境中的开发过程中禁用php缓存。

在Apache(XAMPP或WAMP)文件夹中的php文件夹下打开文件php.ini,将opcache.enable更改为0,如下所示:

[opcache]
zend_extension=php_opcache.dll
; Determines if Zend OPCache is enabled
opcache.enable=0

增加(替代解决方案)

重要提示:以下解决方案不适合测试Restful Api,canvas,重型解决方案等。这可能会给您带来一些麻烦,我建议使用默认端口80的虚拟主机解决方案。

可以部署临时虚拟服务器,而无需配置XAMPP / WAMP虚拟主机,启动CMD控制台并运行以下php命令:

php -S localhost:8001 -t c:\vhost\Laravel-Project\public
  • 端口8001可以更改为任何可用的端口号,并确保与其他软件端口冲突。
  • c:\vhost\Laravel...路径应该改变为你的项目路径。
  • 可以启动多个服务器,但应该有不同的端口号。

在您的浏览器中,您只需要正确

http://localhost:8001/

关于403 Access forbidden错误的注意事项

如果在浏览到站点时出现403 Access forbidden错误,则可能需要将其添加到httpd.conf文件中:

<Directory path_to_dir>
    AllowOverride none
    Require all granted
</Directory>

1
投票

您可以使本地主机指向不同端口号上的不同文件夹。请遵循以下简单步骤:

第1步:让你的apache听多个端口。转到C:\ xampp \ apache \ conf \ httpd.conf并搜索关键词Listen你可以看到类似这样的内容听80.现在告诉你的apache听多个端口,用下面的内容替换它

  • 听80
  • 听8001
  • 听8002

第2步:现在转到“C:\ xampp \ apache \ conf \ extra \ httpd-vhosts.conf”,这是实际播放器。在文件的末尾,您可以指定以下内容:

DocumentRoot“C:/ xampp / htdocs / project1”ServerName localhost:8001

DocumentRoot“C:/ xampp / htdocs / project2”ServerName localhost:8002

这告诉你的apache在点击不同的端口号时采取不同的文件夹。这是当你点击localhost:8001 /它将从project1获取内容,类似localhost:8002 /将指向你的project2文件夹。

通过这样做,我们在本地机器上运行2个不同的站点。

注意:每当您在httpd.conf或httpd-vhosts.conf中更改内容时,都需要重新启动Apache。


0
投票

首先,以管理员身份打开记事本,然后单击file > open。然后转到您的窗口驱动程序,现在搜索system32文件夹,然后搜索drivers文件夹,然后搜索etc文件夹。

现在您将看到一个空文件的文件夹,所以不要担心在底部看到文本文档(*.txt)。将视图更改为all files然后您将看到vhost文件。

打开并享受!


0
投票

虚拟主机创建

  1. C:\ xampp \ apache \ conf \ extra打开httpd-vhost文件,然后添加 DocumentRoot“C:\ xampp \ htdocs \ project \ timegrid \ public”ServerName mytimegrid.me(你的选择)
  2. C:\ Windows \ System32 \ drivers \ etc打开hosts文件然后添加127.0.0.1 mytimegrid.me(您的域名)

注:首先打开您的编辑器(记事本等....)作为运行管理员模式,否则您无法保存这些文件。好。

© www.soinside.com 2019 - 2024. All rights reserved.