讲师中心 微信公众号
AI工具推荐 视频效率加速

XAMPP虚拟主机泛域名配置:实现二级域名自动解析到对应子目录

秋强同学_7419

秋强同学_7419

发布时间:2026-06-17 20:56:26

|

824人浏览过

|

来源于php中文网

原创

使用VirtualDocumentRoot而非多个<VirtualHost>块,是因为它通过mod_vhost_alias模块实现动态路由,依据Host头实时拼接路径(如%1取首段子域名),避免配置臃肿、重启慢和语法错误,适用于多租户/SaaS场景;需启用模块、禁用默认主机、配置ServerAlias *.example.com及UseCanonicalName Off,并手动添加hosts条目。

xampp虚拟主机泛域名配置:实现二级域名自动解析到对应子目录

为什么用 VirtualDocumentRoot 而不是多个 <VirtualHost> 块

手动为每个二级域名写一个 <VirtualHost> 块,在用户量增长后会迅速失控——配置文件臃肿、重启慢、易出语法错误。而 VirtualDocumentRoot 是 Apache 的动态路由机制,它不依赖预定义的域名列表,而是根据请求 Host 头实时拼接物理路径,适合多租户、SaaS 或用户自注册场景。

关键前提是必须启用 mod_vhost_alias 模块。XAMPP 默认已加载该模块,但需确认 httpd.conf 中这行未被注释:LoadModule vhost_alias_module modules/mod_vhost_alias.so。漏掉这行会导致 Apache 启动失败或直接忽略 VirtualDocumentRoot 指令。

如何正确设置 VirtualDocumentRoot 路径变量

VirtualDocumentRoot 的路径中不能用硬编码目录名,必须用变量占位符(如 %1、%2+、%0)解析 Host 字符串。常见错误是把 %1 当成“第一个子域名”,其实它取的是 Host 中第一个点号前的部分;%2+ 才表示从第二个点号开始的全部内容(含点号),%0 是完整 Host。

  • 要让 user1.example.com 自动映射到 C:/xampp/htdocs/users/user1,应写:VirtualDocumentRoot "C:/xampp/htdocs/users/%1"
  • 若主域是 example.com,想支持 blog.example.com 和 api.example.com,但又不想和用户目录冲突,可用:VirtualDocumentRoot "C:/xampp/htdocs/sites/%1",再确保 example.com 本身走默认站点(见下一条)
  • 路径中一律用正斜杠 /,反斜杠 \ 在 Apache 内部可能被误解析为转义符
  • 路径必须用双引号包裹,且确保目录真实存在、有读取权限

必须禁用默认虚拟主机,否则泛解析失效

Apache 总会匹配一个 <VirtualHost> 块。如果你没显式定义一个兜底的 _default_:80 或明确的 ServerName localhost 块,所有未被 VirtualDocumentRoot 覆盖的请求(比如直接访问 127.0.0.1 或 localhost)会落到 XAMPP 自带的默认站点(即 htdocs 根目录),造成泛解析“部分生效”的假象。

解决办法是在 httpd-vhosts.conf 最顶部插入:

<VirtualHost _default_:80>
    DocumentRoot "C:/xampp/htdocs"
    <Directory "C:/xampp/htdocs">
        Require all granted
        AllowOverride All
    </Directory>
</VirtualHost>

然后在下方单独写泛解析块:

XAMPP 8.0.30
XAMPP 8.0.30

XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin

下载
<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.example.com
    UseCanonicalName Off
    VirtualDocumentRoot "C:/xampp/htdocs/users/%1"
</VirtualHost>

注意:ServerAlias *.example.com 是必需的,否则 Apache 不会把请求交给这个块处理;UseCanonicalName Off 确保 Host 头原样传递给 VirtualDocumentRoot 解析。

Windows hosts 文件无法通配,必须逐条映射测试域名

浏览器发起请求前,先查系统 hosts 文件。而 Windows 的 hosts **完全不支持通配符**,写 127.0.0.1 *.example.com 是无效的,会被整个忽略。

本地开发时,只能手动添加常用测试域名:

  • 127.0.0.1 example.com
  • 127.0.0.1 user1.example.com
  • 127.0.0.1 blog.example.com

每加一行就保存一次,无需重启系统,但建议执行 ipconfig /flushdns 清空 DNS 缓存,并在浏览器访问前用 ping user1.example.com 验证是否返回 127.0.0.1。Chrome/Firefox 若仍跳转到 XAMPP 默认页,大概率是 hosts 没生效或 Apache 没加载泛解析块——优先检查 httpd -t 语法验证结果。

真正上线时,DNS 层面才需要配置泛解析(A 记录主机名为 *),本地 hosts 只负责开发阶段有限覆盖。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

9604

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

5781

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2055

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

3608

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

4294

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

3371

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4777

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

3742

2023.11.13

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn