server.historyApiFallback

  • 类型: boolean | ConnectHistoryApiFallbackOptions
  • 默认值: false

当 Rsbuild 默认的 页面路由 行为无法满足你的需求时,例如,希望在访问 / 时可以访问 main.html ,你可以通过 server.historyApiFallback 配置项来实现这个功能。

示例

server.historyApiFallback 基于 connect-history-api-fallback 实现,将 server.historyApiFallback 设置为 true 时,等价于使用 connect-history-api-fallback 的默认选项。

rsbuild.config.ts
export default {
  server: {
    historyApiFallback: true,
  },
};

默认情况下,connect-history-api-fallback 会将所有的 HTML GET 请求重定向到 index.html

选项

server.historyApiFallback 也支持传入一个对象来配置 connect-history-api-fallback 的行为。

下面是一些常用的选项,更多选项和详细信息可参考 connect-history-api-fallback 文档。

index

  • 类型: string
  • 默认值: 'index.html'

通过将 historyApiFallback.index 设置为 main.html,当访问根路径 / 或其他可能导致 404 的路由时,页面会自动重定向到 main.html

rsbuild.config.ts
export default {
  source: {
    entry: {
      main: './src/index.ts',
    },
  },
  server: {
    htmlFallback: false,
    historyApiFallback: {
      index: '/main.html',
    },
  },
};

rewrites

  • 类型:
type Rewrites = Array<{
  from: RegExp;
  to: string | RegExp | ((context: HistoryApiFallbackContext) => string);
}>;
  • 默认值: []

当你的应用包含多个入口(entry)时,你可能需要将不同的访问路径重定向到不同的页面。此时,你可以通过 rewrites 选项来配置更灵活的重定向规则:

rsbuild.config.ts
export default {
  server: {
    historyApiFallback: {
      rewrites: [
        { from: /^\/$/, to: '/views/landing.html' },
        { from: /^\/subpage/, to: '/views/subpage.html' },
        { from: /./, to: '/views/404.html' },
      ],
    },
  },
};