使用 express 进行 firebase 云功能重定向

firebase cloud function redirect with express

我正在尝试自动确定应将用户重定向到网站的哪种语言。

设置是带有 ExpressJS 服务器和 Angular 通用 SSR 的 Firebase 云函数。

当首选语言由 request.acceptsLanguages(...) 确定时,我正在尝试通过 response.redirect('/en'); 重定向。

当通过 firebase serve 在本地调试它时它会重定向,但当部署时它似乎根本不起作用,甚至来自该端点的日志也不会显示在日志列表中。

// All base routes are redirected to language specific
app.get('/', (req, res) => {
  console.log('this is /');

  if (req.acceptsLanguages('cs', 'cs-CZ', 'sk', 'sk-CZ')) {
    res.redirect(`/cs`);
  } else {
    res.redirect(`/en`);
  }
});

// All regular routes use the Universal engine
app.get('*', (req, res) => {
  console.log('this is *');

  res.render('index', { req });
});

export const ssr = functions.https.onRequest(app);

问题在于 index.html/ 路由上作为静态文件提供。

我通过将 Angular 的 index.html 重命名为 web-index.html 解决了这个问题(任何描述性名称都可以)。

也可以通过将 Express 静态文件服务器配置为在找到匹配路由时不提供 index.html 文件来解决,但这将禁止提供任何已预呈现的页面(如果您有SSR 预渲染设置)。