滚动新闻 →
山东女孩校内身亡 家属查看监控遭拒引抗议 中南海高层密集异动 西藏等三省书记换人 Windows 11 关机、重启和睡眠有什么区别?日常使用应该怎样选择 涉收礼换取官位 韩前第一夫人金建希二审7年减为5年 “35岁以下更好卖”中国男赴泰遭持抢绑架到缅甸 辽宁一小区火灾致4人伤亡 中国三起火灾至少35死 Windows 本地搭建多个 PHP 网站,Apache 虚拟主机应该如何设置 健康币10月开跑 最快赚币攻略一次看 英美首度水下无人载具试射鱼雷 AUKUS重大突破 《儒林外史》如何描写读书人的处境 大陆影视寒冬砸向顶级演员 传片酬从千万降至百万 大雪与古代人的冬季生活 精准预言习近平:中国学者14年前的判断 再受关注 初学围棋需要了解哪些基本概念 伊朗外长抵纽约 出席联合国大会 “川习会”前传北京提一要求 习近平临场露怯 孩子总喜欢插队,父母应该怎样教育 户外拍摄如何应对复杂光线 长城真正改变了中国历史吗 苹果35岁华人工程师钓鱼身亡 留下3名年幼子女 踏穿盐酸桶槽顶 高雄南部电厂10人呛伤送医 床底空间到底适不适合用来收纳 信骅开盘跳空涨停冲上21800元 创台股新纪录 柬埔寨电诈园内部曝光 2万人城中城惊现中文标语 盐在中国饮食文化中为什么如此重要 中国女游大马险遭性侵 熟睡时遭陌生男闯入脱衣 港名媛蔡天凤案开庭 前夫一家受审 近百民众旁听 西洋棋奥林匹克团体赛过半 乌兹别克领跑公开组 台风杜鹃重创日本关东 豪雨土石流酿2失联1重伤 旅行住宿应该选择一个地方还是多个地方 政府清田酿命案 村民:为何事先安排医生? 发动机舱出现尖锐啸叫声有哪些原因 川普迎习 B-2轰炸机、F-22将亮相 电动车开几年以后电池会发生什么变化 别具意味?川普出动B-2轰炸机、F-22战机“迎习” 激光水平仪适合哪些家庭维修工作 千亿并购案大推进 派拉蒙与美12州和解 欧情报首长警告俄威胁升高 数月内或试探北约 GPU Direct 技术解决了什么问题,数据为什么可以绕过部分传统数据传输路径 CNN等三媒体提告白宫 川普:假新闻威胁国安

Windows 本地搭建多个 PHP 网站,Apache 虚拟主机应该如何设置

发布时间: 2026-09-22 02:30:02    最后更新: 2026-09-22 03:23:38    阅读:6  约9 分钟阅读     

在Windows电脑上同时运行多个PHP网站,并不需要为每个网站安装一套独立的Apache。Apache本身就支持虚拟主机,可以让多个网站共用同一个Web服务器,通过不同的域名将请求分配到不同的网站目录。对于本地开发环境来说,这种方式比为每个项目设置不同端口更加方便,也更接近真实服务器上的网站部署方式。 假设电脑上准备运行两个PHP网站,可以分别建立在 `C:\Apache24\htdocs\site1` 和 `C:\Apache24\htdocs\site2`。两个网站使用同一个Apache实例,但各自拥有独立的DocumentRoot。真正决定请求进入哪个网站的,并不是目录名称,而是浏览器访问时使用的域名。 首先需要确认Apache已经启用了虚拟主机配置。在 `httpd.conf` 中找到类似下面的配置: `Include conf/extra/httpd-vhosts.conf` 如果前面存在 `#`,需要取消注释。然后打开 `conf\extra\httpd-vhosts.conf`,为每个网站建立一个VirtualHost。 例如,第一个网站可以使用 `site1.local`: `` ` ServerName site1.local` ` DocumentRoot "C:/Apache24/htdocs/site1"` ` ` ` AllowOverride All` ` Require all granted` ` ` `` 第二个网站则可以配置为: `` ` ServerName site2.local` ` DocumentRoot "C:/Apache24/htdocs/site2"` ` ` ` AllowOverride All` ` Require all granted` ` ` `` 这里最重要的一点是,两个网站完全可以同时使用80端口。Apache根据浏览器发送的Host信息判断用户访问的是 `site1.local` 还是 `site2.local`,然后将请求交给对应的虚拟主机。因此,正常的本地开发环境通常不需要给每个网站分配不同端口。 接下来还需要让Windows知道这些本地域名应该指向本机。Windows的hosts文件通常位于: `C:\Windows\System32\drivers\etc\hosts` 使用管理员权限打开后,可以加入: `127.0.0.1 site1.local` `127.0.0.1 site2.local` 保存以后,浏览器访问 `http://site1.local` 就会先通过hosts文件解析到本机,再由Apache根据ServerName选择site1目录。同理,访问 `http://site2.local` 时则进入site2目录。 如果只是使用 `localhost` 加不同路径,例如 `http://localhost/site1` 和 `http://localhost/site2`,其实并不需要虚拟主机。只有当希望不同网站拥有独立域名、独立DocumentRoot,或者需要模拟真实生产环境时,虚拟主机才更加有价值。 PHP的配置则需要根据安装方式决定。如果使用较新的PHP for Windows,通常推荐通过FastCGI运行PHP,而不是继续使用已经过时的PHP 7 Apache模块配置。Apache可以通过mod_proxy_fcgi等机制把PHP请求交给PHP-CGI或PHP-FPM兼容的FastCGI服务处理。不同PHP发行版和开发环境的具体配置方式可能有所不同,因此不能简单地把 `LoadModule php7_module "modules/php7.so"` 复制到新的PHP环境中。 如果使用XAMPP、WampServer等集成开发环境,PHP和Apache通常已经完成了基础集成,此时重点是配置虚拟主机,而不是重复安装PHP模块。对于自己安装Apache和PHP的用户,则应该先确认PHP命令行版本、Apache版本以及PHP运行方式,再确定对应的Apache配置。 每个网站还应该拥有自己的Directory配置。例如: `` ` AllowOverride All` ` Require all granted` `` 其中 `Require all granted` 是允许Apache访问该目录的重要配置。Windows上的文件权限与Linux不同,通常不应该照搬Linux服务器上的 `chmod 755` 或 `chmod 644` 思路。出现403 Forbidden时,应检查Apache进程是否能够访问目标目录,同时检查虚拟主机配置是否正确。 网站默认首页则可以通过 `DirectoryIndex` 设置。例如: `DirectoryIndex index.php index.html` 这样,当用户访问网站根目录时,Apache会优先寻找index.php,如果不存在,再尝试index.html。这个配置可以放在Apache全局配置中,也可以根据AllowOverride设置放在网站自己的.htaccess文件中。 需要注意的是,两个网站拥有同名的 `index.php` 完全没有问题。site1的 `index.php` 和site2的 `index.php` 位于不同的DocumentRoot,Apache不会因为文件名相同而“优先加载第一个”。决定文件位置的是虚拟主机的DocumentRoot,而不是服务器中哪个文件先出现。 如果网站使用Rewrite规则,例如PHP框架、WordPress或者自定义路由系统,则需要允许 `.htaccess` 工作。常见配置是: `AllowOverride All` 同时应确认Apache已经加载mod_rewrite模块。否则,网站虽然能够打开首页,但访问内部URL时可能出现404错误。 配置完成以后,不要直接猜测问题出在哪里,而应该先进行语法检查。Windows环境下可以在Apache的bin目录执行: `httpd.exe -t` 如果显示 `Syntax OK`,说明Apache配置文件的基本语法没有问题。随后重新启动Apache。如果启动失败,应立即检查Apache错误日志,而不是不断修改配置文件。 还可以使用: `httpd.exe -S` 查看Apache当前识别到的虚拟主机配置。这个命令对于排查多个VirtualHost非常有用,可以看到80端口上配置了哪些域名,以及Apache最终将请求映射到哪个虚拟主机。 如果浏览器访问 `site1.local` 却进入了site2,通常应该优先检查ServerName、hosts文件以及VirtualHost配置顺序,而不是修改PHP代码。如果两个VirtualHost使用相同的ServerName,Apache就无法按照预期区分网站。 本地HTTPS测试则属于另一层配置。如果需要测试登录Cookie、安全上下文、Service Worker或者正式环境中的HTTPS行为,可以进一步为每个本地域名配置SSL虚拟主机,例如监听443端口,并使用mkcert生成本地受信任证书。此时需要同时配置证书、私钥以及对应的HTTPS VirtualHost。 对于Windows本地开发来说,多个PHP网站最合理的结构通常是“一个Apache、多个DocumentRoot、多个本地域名”。例如site1.local对应site1目录,site2.local对应site2目录。所有网站可以共享80端口,通过Host请求头完成分流。只有在需要模拟不同服务、不同网络端口或者特殊测试环境时,才有必要让网站分别监听8080、8081等端口。 掌握VirtualHost、DocumentRoot、ServerName和hosts文件之间的关系之后,本地运行多个PHP项目就不再需要不断修改Apache主目录。每个网站拥有独立目录和域名,同时共享Apache、PHP运行环境,这种结构既便于开发,也更加接近实际服务器上的多站点部署方式。

喜欢这篇报道?

使用下面的功能,方便以后继续阅读和分享 MNewsTV

设为 Google 新闻首选来源 让 Google 新闻优先显示 MNewsTV 的最新报道
我的收藏 查看已经收藏的文章
关于文章收藏 收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。 删除收藏请进入「我的收藏」进行管理。
分享这篇报道

分享 Facebook | X | WhatsApp | LinkedIn

捐助(Paypal): https://www.paypal.me/observeccp
订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP