这篇文章上次修改于 1820 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

Xampp 是一款方便快捷的服务器环境整合包,方便用于本地调试 PHP、JSP、Perl 语言所编写的程序。保罗从刚入门网站技术就使用至今。由于近期打算做一期视频教程,我需要开一个 FTP 服务器,就打算重装升级我虚拟机里现有的版本(2015 年发布的,太古老了)顺便研究一下如何利用 Apache 添加多个虚拟主机 VirtualHost,以便结合 HOSTS 开设多个站点。

本教程针对的是目前的最新版本(基于 PHP 7.3.3.0)而编写,其他版本仅供参考,不保证配置文件及默认设置完全相同。

需要

我的虚拟机环境为 Windows 7 7601 (SP1),如果你的版本不是 7601,可能无法安装运行库,也就无法运行 Apache。如果你需要下载 SP1 的更新补丁,请参阅 此传送门,选中下载 1.9G 的那个 ISO 镜像文件,接入虚拟机安装即可。

  • 一个安装好的 Xampp 程序
  • Microsoft Visual C++ 2015 Redistributable 运行库

修改主配置文件

打开检查 apache/conf/httpd.conf 主配置文件。确保引用了 httpd-vhosts.conf 文件而并未被注释。(可能在 519 行)

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

修改虚机配置文件

打开 apache/conf/extra/httpd-vhosts.conf 虚拟主机配置文件,一般里面的所有虚拟主机都被注释了。

##<VirtualHost *:80>
    ##ServerAdmin [email protected]
    ##DocumentRoot "C:/Xampp/htdocs/dummy-host.example.com"
    ##ServerName dummy-host.example.com
    ##ServerAlias www.dummy-host.example.com
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
##</VirtualHost>

我们分别取消注释,修改一下每项的内容,他们的意义如下:

  • ServerAdmin:主机管理员的邮箱地址
  • DocumentRoot:主机的根目录,也就是访问网站指向的文件夹
  • ServerName:主机的域名
  • ServerAlias:主机的别名,可注释不用
  • ErrorLog:主机运行错误的日志文件,可用于查错
  • CustomLog:主机的运行日志文件

别急着保存重启,修改完之后还不能立即食用!你还需要添加一段 Directory 记录,放在该虚拟主机里面,才可以正常访问!

<Directory "主机的根目录地址">
    AllowOverride All
    Require all granted
</Directory>

它们的意思分别是:

  • AllowOverride All:允许额外的 .htaccess 配置文件替换默认设置
  • Require all granted:允许所有请求

大家也可以参考我现在的配置文件,自己配置研究:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "C:/Xampp/paul"
    ServerName blog.paul.me
    <Directory "C:/Xampp/paul">
        AllowOverride All
        Require all granted
    </Directory>
    #ErrorLog "logs/blog.paul.me-error.log"
    #CustomLog "logs/blog.paul.me-access.log" common
</VirtualHost>

保存设置,重启 Apache 服务!

添加 HOSTS

HOSTS 用于在自己的电脑上设置自定义域名解析记录,可覆盖公网 DNS 服务器请求到的 IP 地址。正是由于这个特点,我们可以开启食用各种奇葩的域名,例如 im.pauldreamer.paul 都能是一个合法的网站域名。

在 Windows 环境下,HOSTS 文件位于 C:\Windows\System32\drivers\etc 文件夹下,我们打开编辑它。HOSTS 的编写方法非常简单,只需要前面写上 IP,后面写上域名,就可以访问了!如果你想写多条解析方便区分,你可以用 # 注释一行内容,以后就能快速辨认了。

10.7.9.201          blog.paul.me

修改保存过后,我们打开浏览器,输入 http://blog.paul.me 呈现的就是我们刚才配置的虚拟主机了。它可能是 403 错误页面,你在你指定的根目录下放置网站文件,例如 index.html index.php 之后就没有这个问题了。