假设我的应用程序正在domain.com
上运行,并且互联网上指向该站点的大多数链接都像这样:domain.com/:id
。
我想稍微提高SEO并添加重定向(301):
domain.com/:id => domain.com/:title
。但是要获得id的标题,我必须运行angular应用程序并在DB中进行检查。
所以我要做的是:
domain.com/:id
title
中的id
domain.com/:title
答案 0 :(得分:0)
您必须在服务器端渲染中使用Angular Universal运行Angular。有一个入门指南,如果是新的Angular项目,则添加起来相对容易。
https://angular.io/guide/universal
然后必须告诉Express执行301重定向,这可以通过配置用于SSR的主模块来完成。
https://gist.github.com/KostyaEsmukov/ce8a6486b2ea596c138770ae393b196f
答案 1 :(得分:0)
您可以进行一些更改或在您的 server.ts
文件中添加条件。
在列出的代码中,所有路由首先到达这里,然后快速服务器(SSR)呈现前端 Angular HTML 文件。所以在向浏览器发送任何响应之前,我们可以发送 301 状态代码。 我们可以添加这样的条件
// All regular routes use the Universal engine
server.get('*', (req, res) => {
// req.originalUrl in this object we can read the requested URL
if(req.originalUrl == '/old-url-example'){
res.redirect(301, 'http://localhost:4000/new-url');
}else{
res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
}
});
您可以获得有关此article的更多详细信息