不能直接用 hexo s 在 xampp 里跑 hexo 博客,因为 hexo s 启动的是独立 express 服务器(默认端口 4000),与 xampp 的 apache 完全无关;需通过 hexo g 生成静态文件并正确配置 apache 虚拟主机、directoryindex 和 mod_rewrite 才能使其在 xampp 中正常运行。

为什么不能直接用 hexo s 在 XAMPP 里跑 Hexo 博客
Hexo 自带的 hexo s 启动的是独立 Express 服务器(默认端口 4000),和 XAMPP 的 Apache 完全无关。你把它开着,XAMPP 的 httpd.exe 还在监听 80 或 8080,两者不互通、不代理、不共享配置——相当于两个各自点火的炉子,烧的不是同一锅水。
想让 Hexo 内容走 XAMPP,核心动作只有一个:把 hexo g 生成的 public/ 目录当作纯静态文件,扔进 Apache 能服务的路径下,并确保端口、权限、重写规则都对得上。
如何把 public/ 正确挂进 XAMPP 的多端口 Apache
XAMPP 默认只开 80 端口,要支持多端口(比如 8080、8081),必须手动改 httpd.conf 和虚拟主机配置:
- 打开
XAMPP\apache\conf\httpd.conf,确认已启用Include conf/extra/httpd-vhosts.conf(去掉行首#) - 编辑
XAMPP\apache\conf\extra\httpd-vhosts.conf,追加类似以下配置(以端口8080为例):<virtualhost> DocumentRoot "D:/myblog/public" ServerName localhost <directory> Options Indexes FollowSymLinks AllowOverride All Require all granted </directory></virtualhost> - 确保
DocumentRoot指向你执行过hexo g后的真实public/路径,且路径中不含中文或空格 - 重启 Apache(通过 XAMPP 控制面板),再访问
http://localhost:8080就能看到博客首页
hexo g 后的链接路径错乱?检查 url 和 root 配置
Hexo 生成的 HTML 中所有资源(CSS、JS、图片)路径,都依赖 _config.yml 里的两个关键字段:
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
-
url:必须设为最终可访问的完整地址,比如http://localhost:8080(不是http://localhost:4000) -
root:如果博客部署在子路径(如http://localhost:8080/myblog/),这里才填/myblog/;如果直接挂在根目录(http://localhost:8080/),就填/ - 改完务必重新执行
hexo clean && hexo g,否则旧缓存会继续输出错误路径
常见现象:页面空白、样式丢失、文章 404——八成是 root 填成了 /,但实际 Apache 虚拟主机却配在了子目录;或者 url 还留着默认的 http://yoursite.com,导致浏览器去请求外网资源。
Apache 处理 Hexo 的 404 和伪静态问题
Hexo 生成的是真实 HTML 文件(如 post/hello-world/index.html),但你访问 /post/hello-world/ 时,Apache 默认不会自动找 index.html——除非开启 DirectoryIndex:
- 在虚拟主机配置的
<directory></directory>块内,加上一行:DirectoryIndex index.html - 如果你用了 Hexo 插件(如
hexo-permalink-pinyin)生成非标准路径,或启用了pretty_urls,还需启用mod_rewrite并添加.htaccess(放在public/根目录):RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] - 注意:
mod_rewrite必须在httpd.conf中启用(去掉#LoadModule rewrite_module modules/mod_rewrite.so前的#)
没配好 DirectoryIndex,你会看到「Forbidden: You don't have permission to access this resource」;没启用 mod_rewrite 或规则不对,点击文章链接就会直接 404——这不是 Hexo 的问题,是 Apache 没理解你要它“兜底”。
最易被忽略的一点:每次改完 _config.yml 或 Apache 配置,都要分别执行 hexo clean && hexo g 和重启 Apache。两个环节缺一不可,且顺序不能反——先有正确的静态文件,再有正确的服务器响应。










