You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scully静态服务器无法正常访问带百分号编码空格的URL路径

问题原因

Scully 生成静态文件时会自动对路由中的百分号编码做解码处理,你在 scully-routes.json 中定义的 /Page%201 会被解码为 /Page 1,最终生成的静态文件存放在 ./dist/static/Page 1/ 目录下。
Scully 内置的静态开发服务器不会自动对请求路径做解码匹配,浏览器发送的 Page%201 请求无法对应到本地的 Page 1 目录,就会返回404错误。无空格的路由不存在编码解码差异,所以可以正常访问。

解决方案

方案1:调整Scully路由配置(本地+部署通用,推荐)

  • 打开项目根目录下的 scully.<你的项目名>.config.ts 配置文件,直接定义未编码的原始路由,不要手动写百分号编码格式:
import { ScullyConfig } from '@scullyio/scully';

export const config: ScullyConfig = {
  projectRoot: "./src",
  projectName: "替换为你的实际项目名称",
  outDir: './dist/static',
  // 路由配置直接使用原始带空格的路径,不要写%20
  routes: {
    '/Page 1': { type: 'default' },
    // 其他带特殊字符的路由都按照原始格式填写
  }
};
  • 删除原有的 scully-routes.json 文件,重新执行Scully生成命令:
    npx scully --scanRoutes
  • 重启Scully静态服务器即可正常访问带空格的路由。

方案2:本地测试临时兼容

如果不想调整路由配置,可在Scully配置中添加404 fallback规则,所有未匹配的请求都回退到index.html走客户端路由:
在原有Scully配置中新增字段即可:

export const config: ScullyConfig = {
  // 保留原有所有配置不变,新增以下字段
  handle404: 'index',
};

该方案不会破坏原有静态文件生成规则,可直接兼容本地开发时的编码路由访问。

方案3:生产部署兼容

正式环境部署不需要使用Scully内置服务器,用Nginx、Caddy等常规Web服务器部署即可,这类服务器默认会自动对请求路径的百分号编码做解码,直接匹配带空格的静态目录,无需额外修改配置。


内容的提问来源于stack exchange,提问作者domrac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:54:08