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

Dim*_*off 38 apache xampp wamp

这个标签在哪里?

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

我在文档中找不到它.

<VirtualHost hostname:80>
   ...
   SetEnv NS_ENV variable_value
   ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

may*_*ʎɐɯ 96

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

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

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

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

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

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

  • 改变你的Apache港口到港口8080,8081等或其他一些自由港(注:8080可有时也给一些问题)
  • 或者更改您的其他软件/ IIS端口并在Skype的情况下将Apache保持默认端口80,只需终止Skype应用并在端口80上安装Apache后重新启动它,Skype将自动获得新端口.

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

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

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

步骤1.编辑httpd.conf

点击配置- >阿帕奇(httpd.conf文件),或者你在这里找到该文件C:\XAMPP\apache\conf\httpd.conf,C:\XAMPP\apache2\conf\httpd.conf,C:\Bitnami\wampstack\apache\conf\httpd.confC:\Bitnami\wampstack\apache2\conf\httpd.conf或类似的位置.

改变行

Listen 80
Run Code Online (Sandbox Code Playgroud)

到8080或其他,免费端口.

Listen 8080
Run Code Online (Sandbox Code Playgroud)

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

虚拟主机

注意:默认情况下,服务器文件定位上C:\XAMPP\htdocs还是C:\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
Run Code Online (Sandbox Code Playgroud)

注:如果您在Laravel工程项目,你可以创造出无限的Laravel项目,以及其他框架一样笨,Yii的,等等,关键是让你的Laravel项目/ s的c:\vhost\laravel1, c:\vhost\laravel2等等,使c:\vhost\laravel1\public作为DocumentRoot的等像以前表现.每个Laravel项目都有自己的VirtualHost URL.

保存并关闭文件

一些额外的信息和说明:

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

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

步骤3.编辑Windows主机文件

  1. 从XAMPP/WAMP停止Apache和MySQL服务.
  2. 打开hosts文件C:\windows\system32\drivers\etc 需要管理员权限才能编辑文件.我建议用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
Run Code Online (Sandbox Code Playgroud)

保存文件

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


加法(建议)

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

php.ini在Apache(XAMPP或WAMP)文件夹中的php文件夹下打开文件并更改opcache.enable0如下所示:

[opcache]
zend_extension=php_opcache.dll
; Determines if Zend OPCache is enabled
opcache.enable=0
Run Code Online (Sandbox Code Playgroud)

增加(替代解决方案)

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

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

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

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

http://localhost:8001/
Run Code Online (Sandbox Code Playgroud)

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

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

<Directory path_to_dir>
    AllowOverride none
    Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

  • 如果您在浏览站点时收到 403 Access forbidden 错误,您可能需要将其添加到 httpd.conf 文件中: &lt;Directory path_to_dir&gt; AllowOverride none Require all allowed &lt;/Directory&gt; (2认同)