是否可以在angular应用中添加重定向(301)?

时间:2019-04-12 14:01:18

标签: angular redirect angular-router

假设我的应用程序正在domain.com上运行,并且互联网上指向该站点的大多数链接都像这样:domain.com/:id

我想稍微提高SEO并添加重定向(301): domain.com/:id => domain.com/:title。但是要获得id的标题,我必须运行angular应用程序并在DB中进行检查。

所以我要做的是:

  1. 用户转到domain.com/:id
  2. 从角度应用程序内的网址中检查title中的id
  3. 将具有301状态的用户重定向到domain.com/:title

2 个答案:

答案 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的更多详细信息