使用 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 预渲染设置)。
我正在尝试自动确定应将用户重定向到网站的哪种语言。
设置是带有 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 预渲染设置)。