我正在尝试自动确定应该将用户重定向到网站的语言。
设置是具有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);
答案 0 :(得分:0)
问题在于index.html
被用作/
路由上的静态文件。
我通过将Angular的index.html
重命名为web-index.html
来解决此问题(任何描述性名称都可以)。
也可以通过将Express静态文件服务器配置为不提供index.html
文件(如果找到匹配的路由)来解决问题,但是这将禁用为已预渲染的任何页面提供服务(如果您具有SSR预渲染功能)设置)。