使用Express重定向Firebase云功能

时间:2019-03-14 15:52:46

标签: firebase express google-cloud-functions angular-universal response.redirect

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

设置是具有ExpressJS服务器和Angular Universal 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);

1 个答案:

答案 0 :(得分:0)

问题在于index.html被用作/路由上的静态文件。

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

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