Azure Function Proxies 静态站点路由异常:BlobNotFound错误排查
解决Hugo静态站托管Blob存储时子页面404的问题
我之前部署Hugo静态站到Blob存储时,也碰到过完全一样的坑!根路径能正常打开,但一点子页面链接就跳BlobNotFound,明明对应的index.html Blob就在那里,问题确实出在proxies.json的路由配置上。
问题本质
Hugo生成的子页面(比如/about/)实际对应的Blob是about/index.html,但Blob存储的默认路由规则会把/about/的请求直接解析为查找名为about的Blob(而不是about/index.html),这就导致了明明文件存在却报找不到的错误。
正确的proxies.json配置
你需要在Blob存储的根容器(和站点根目录的index.html同位置)创建proxies.json文件,配置路由规则让非静态资源的请求自动转发到对应路径的index.html:
{ "routes": [ { "route": "/[^.]+$", "serve": "{route}/index.html", "statusCode": 200 } ] }
配置说明
route: 匹配所有没有文件后缀的路径(比如/about、/posts/my-post),这样不会影响CSS、JS、图片等静态资源的正常访问。serve: 使用{route}变量动态拼接对应的index.html路径,比如请求/about会转发到/about/index.html,完全匹配Hugo的静态文件结构。statusCode: 设置为200确保返回正常的成功状态码。
额外注意事项
- 检查内容类型: 确保
proxies.json的Blob内容类型设置为application/json,否则Blob存储不会识别这个配置文件。 - Hugo配置优化: 在Hugo的
config.toml里设置baseURL = "/"和relativeURLs = true,生成相对路径的链接,避免绝对路径导致的路由问题。 - 大小写敏感: Blob存储是区分大小写的,确保Hugo生成的文件名和页面链接的大小写完全一致(比如不要出现链接是
/About但Blob是about/index.html的情况)。
这样配置后,再点击子页面链接应该就能正常访问了!
内容的提问来源于stack exchange,提问作者John Barnes
相关产品推荐
相关产品推荐

