sanity studio 默认运行在 http://localhost:3333,xampp apache 默认占用 80 端口不冲突;如需代理 sanity api,应启用 mod_proxy 和 mod_rewrite 模块,新增监听端口(如 8080),配置虚拟主机实现 /api/ 路径反向代理,并确保 sanity 后端 cors 允许 localhost:8080。

Sanity Studio 默认启动在 http://localhost:3333,而 XAMPP 的 Apache 默认占着 80 端口——两者不冲突,但如果你希望用 XAMPP 代理 Sanity 的 API(比如把 /api/ 请求转发到本地 Sanity 后端),就得让 Apache 监听一个**额外端口**(如 8080),并启用 mod_proxy 模块。直接改 80 端口不是必须的,也不推荐,因为会断掉你原本的 localhost 访问。
确认 Apache 已启用 mod_proxy 和 mod_rewrite
Sanity 代理依赖反向代理能力,XAMPP 默认是禁用 mod_proxy 的。打开 XAMPP\apache\conf\httpd.conf,检查并取消以下三行的注释(删掉前面的 #):
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.so
漏掉任意一个,ProxyPass 都会报 500 错误或配置无效。改完先别重启——后面要一起验证。
添加新监听端口并配置虚拟主机
你不需要动默认的 80 端口,只需加一个专用于代理的端口(比如 8080)。在 httpd.conf 中找到 Listen 80,在其下方新增:
Listen 8080
然后确保虚拟主机配置已启用:找到这一行,去掉 #
#Include conf/extra/httpd-vhosts.conf
接着编辑 XAMPP\apache\conf\extra\httpd-vhosts.conf,在末尾追加:
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>
ServerName localhost
DocumentRoot "C:/xampp/htdocs"
ProxyPreserveHost On
ProxyPass /api/ http://localhost:3333/api/
ProxyPassReverse /api/ http://localhost:3333/api/
<directory>
Require all granted
</directory></virtualhost>
-
ProxyPreserveHost On是关键:它让被代理的 Sanity 后端收到的请求里Host头仍是localhost:8080,避免 CORS 或路由判断出错 -
ProxyPassReverse必须和ProxyPass路径完全一致,否则响应头里的重定向地址会错乱 -
Require all granted替代旧版Allow from all,Apache 2.4+ 必须用这个,否则 403
验证配置并启动服务
改完所有文件后,不要直接点 XAMPP 控制面板的 Start —— 先做语法检查:
打开命令行(管理员权限非必需,但能避免某些路径权限问题),进入 XAMPP\apache\bin,运行:
httpd -t
如果输出 Syntax OK,说明配置无硬错误;如果报错,重点看哪一行、哪个模块名拼错了(比如 mod_proxxy.so 少个 y)。
然后重启 Apache。成功后,在浏览器访问 http://localhost:8080/api/dataset,应该能拿到 Sanity 的 JSON 响应(前提是你的 Sanity Studio 已运行在 3333 端口)。
容易忽略的一点:mod_proxy 不会自动允许跨域请求,Sanity 后端本身需配置 CORS 白名单(如 http://localhost:8080),否则浏览器控制台仍会报跨域错误——代理只是把请求“发出去”,不解决响应头限制。










