Express 服务器 + Angular 深 link
Express Server + Angular deep link
我正在使用 Express + Angular 创建 SPA。部分功能是一封电子邮件,其中包含用户在重置密码 (https://[domain].com/reset-password/[token]
) 时点击的 link。
当用户点击 link 时,会将他们带到应用登录页面 (/
) 而不是重置密码页面 (/reset-password/[token]
)。
如何处理从电子邮件、快递到我的 angular 应用程序的深层 link?
我的快递路线是:
router.get('*', function (req, res, next) {
res.redirect('/');
});
我的 Anagular 路线是:
{
path: 'reset-password/:token',
loadChildren: () => import('./pages/reset-password/reset-password.module').then((m) => m.ResetPasswordModule),
},
如果我在 Angular 应用程序中创建一个 link 到 reset-password/:token
路由,它就可以工作。只有通过 Express 发送 link 时才会出现此问题。
如何在不依赖于使用我过去使用的 HashLocationStrategy (RouterModule.forRoot(routes, {useHash: true})
) 解决方案的情况下解决这个问题
我不知道你是如何发送 angular 的静态文件的。但这是一个完整的例子。你的问题是你如何提供静态文件。
// Express will serve all static files from public folder
const publicPath = path.resolve(__dirname, './public');
app.use(express.static(publicPath));
然后,如果 express 没有找到一个文件,ej。 /home
, 不是文件是 angular 路由,发送 index.html
NOT REDIRECT
// Put this after all your api routes
const indexHtml = path.resolve(__dirname, './public/index.html');
app.get('*', (req, res) => {
res.sendFile(indexHtml);
});
这是 express 服务静态文件的例子,但这不是更好的方法,推荐使用 cdn 或代理(如 ngnix)来服务静态文件。
PS。我英语不是很好
我正在使用 Express + Angular 创建 SPA。部分功能是一封电子邮件,其中包含用户在重置密码 (https://[domain].com/reset-password/[token]
) 时点击的 link。
当用户点击 link 时,会将他们带到应用登录页面 (/
) 而不是重置密码页面 (/reset-password/[token]
)。
如何处理从电子邮件、快递到我的 angular 应用程序的深层 link?
我的快递路线是:
router.get('*', function (req, res, next) {
res.redirect('/');
});
我的 Anagular 路线是:
{
path: 'reset-password/:token',
loadChildren: () => import('./pages/reset-password/reset-password.module').then((m) => m.ResetPasswordModule),
},
如果我在 Angular 应用程序中创建一个 link 到 reset-password/:token
路由,它就可以工作。只有通过 Express 发送 link 时才会出现此问题。
如何在不依赖于使用我过去使用的 HashLocationStrategy (RouterModule.forRoot(routes, {useHash: true})
) 解决方案的情况下解决这个问题
我不知道你是如何发送 angular 的静态文件的。但这是一个完整的例子。你的问题是你如何提供静态文件。
// Express will serve all static files from public folder
const publicPath = path.resolve(__dirname, './public');
app.use(express.static(publicPath));
然后,如果 express 没有找到一个文件,ej。 /home
, 不是文件是 angular 路由,发送 index.html
NOT REDIRECT
// Put this after all your api routes
const indexHtml = path.resolve(__dirname, './public/index.html');
app.get('*', (req, res) => {
res.sendFile(indexHtml);
});
这是 express 服务静态文件的例子,但这不是更好的方法,推荐使用 cdn 或代理(如 ngnix)来服务静态文件。
PS。我英语不是很好