XAMPP的Apache无法直接运行Hexo是因为它只分发静态文件,不支持Hexo的动态生成、draft过滤和热重载;而hexo server是基于Node.js的开发服务器,内置路由与实时解析能力。

Hexo 生成的静态文件不能直接靠 XAMPP 的 Apache “自动托管”来预览,必须手动指定文档根目录或复制到 htdocs 下——否则访问会 404 或显示空白页。
为什么 XAMPP 不能像 hexo server 那样直接跑 Hexo?
因为 hexo server 是基于 Node.js 的轻量开发服务器,内置路由、热重载和 Markdown 实时解析;而 XAMPP 的 Apache 是传统 HTTP 服务器,只负责按路径分发已存在的 HTML/JS/CSS 文件,不处理 Hexo 的动态生成逻辑或本地预览特性(比如 draft 过滤、localhost:4000 的实时刷新)。
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
换句话说:XAMPP 不是 Hexo 的替代开发环境,只是静态文件的“最终托管容器”之一。
把 Hexo 站点放进 XAMPP 的 htdocs 目录前必须做三件事
- 先执行
hexo clean && hexo generate,确保public/目录下有完整可运行的静态文件(含index.html、css/、js/、images/等) - 检查
_config.yml中的url和root配置是否匹配你打算访问的路径。例如:若准备把整个public/内容复制进htdocs/myblog/,则需设url: http://localhost/myblog、root: /myblog/,否则 CSS/JS 路径会 404 - 确认主题中没有硬编码的绝对路径(比如某些主题在
source/_data/或 JS 里写死/css/style.css),这类路径在子目录下会失效,得改成相对路径或用动态拼接
Apache 启动后访问 http://localhost/myblog 仍空白?重点查这三点
- 浏览器开发者工具 Network 标签页里看哪些资源返回了 404,尤其是
css/、js/、images/下的文件——大概率是root配置没同步或主题用了绝对路径 - Apache 错误日志(
XAMPP\apache\logs\error.log)里有没有File does not exist提示,它会明确告诉你 Apache 想找但没找到哪个文件 - 检查
public/目录里是否存在index.html(不是index.md),且该文件头部没被 Hexo 的 Front-matter 残留污染(正常生成后 Front-matter 已被移除)
真正容易被忽略的是:root 配置不仅影响链接生成,还影响所有内部资源引用路径。哪怕你只是想临时用 XAMPP 测试部署效果,也必须让 Hexo 在生成阶段就“知道”自己将来会放在子路径下——否则连 favicon 都可能加载失败。

















