滚动新闻 →
AI泡沫担忧致日股重挫 日经指数跌破57000点 MySQL 全表扫描意味着什么?从 EXPLAIN 认识数据库性能问题 陕西商南凶案嫌犯逃亡两日后深山自尽 俄方以制裁为由接管日烟资产 日本敦促立即撤销 《白衣逆行者》撤档引争议 电影方未回应集体抵制 男子向警车投掷汽油瓶引发火灾 警方跨区追捕10小时擒凶 中国女厕偷拍黑产蔓延 超14万女性受害 河北中学厕所冲突致13岁学生死亡 4人获刑 从古典文学看中国人的时间观念 内部人士曝马兴瑞接班饭局内幕 触犯习大忌 经络理论在传统医学中的形成 印章上的篆书为什么特别多 中共大搞3C检查 多地五金店“恐慌式闭店” 巴拉圭银行倒闭 总统潘尼亚抢先国会弹劾提离职 赖均辅逆转许皓鋐 玄乐杯决赛第三局上演惊天逆转 刘云平将成美国国会亚裔最高职位者 民主党夺回国会布局完成 医药高官余艳红主动投案 涉及与习御医曾益新密切关联 如何教育孩子为自己的行为承担后果 欧洲多国航班接连遭遇炸弹恐吓 超25架客机受影响 进化骗局(34) 造假打磨 世界认可 陆配亚亚返乡后展示卫星影像 引发两岸舆论争议 民主党内部派系博弈加剧 四大政治挑战浮现 为什么剪辑不是简单地把片段拼起来 纽约布鲁克林住宅火灾致6人遇难 锂电池或成主因 台湾AI产业带动经济回暖 百货业预期景气延续至2027年 万斯直指伊朗战争影响选情 赫格塞斯或遭弹劾 台股重挫逾3700点失守年线 新台币跌破33元创逾1年半新低 退休夫妇邮轮退休梦破灭 突发停运令203名住户陷入困境 美国国会权力更迭 或重塑全球外交格局 APEC暗潮涌动 美中俄会晤能否成行留悬念 晚清为什么不断出现改革与失败 加拿大公布新预算案 卡尼推动经济自主 赤字引发关注 台湾退役军官涉中共选举干预遭限制出境 中共对台跨境镇压升级 九大手段威胁民主自由 美军加速部署无人机防御体系 涉及超2.5万套装备 纽约布鲁克林木质排屋火灾致6死9伤 美股四大指数重挫 AI科技股集体暴跌 英伟达特斯拉跌逾9% 小户型如何利用墙角空间 欧洲多架航班遭遇炸弹威胁 战斗机紧急护航 加拿大面临中共渗透风险 专家呼吁加强安全审查

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

发布时间: 2026-09-22 02:30:02    最后更新: 2026-11-05 06:45:30    阅读:104  约9 分钟阅读     

Windows 本地搭建多个 PHP 网站,Apache 虚拟主机应该如何设置
图片说明:示意图   图片来源:Public Domain(公有领域)
在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 的最新报道 ›
★ 我的收藏 查看已经收藏的文章
关于文章收藏 收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。 删除收藏请进入「我的收藏」进行管理。
分享这篇报道

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