首页 > 解决方案 > 角度 ssr 的 ERR_TOO_MANY_REDIRECTS 问题

问题描述

我正在我的server.ts文件中实现我的 301 重定向。我在server.get()函数中重定向到 301:

server.get('*', (req, res) => {
    let incomingUrl = req.headers.referer;
    if (incomingUrl && (/.*\/resources(\/.*\/).*/.test(incomingUrl))) {
      let redirectedUrl = incomingUrl.replace(/.*\/resources(\/.*\/).*/, (a, b) => {
        return a.replace(b, b.toLowerCase().split('%20').join('-'));
      });
      res.redirect(301, redirectedUrl);
    } else {
      res.render(indexHtml, { req, providers: [
        { provide: APP_BASE_HREF, useValue: req.baseUrl },
        { provide: REQUEST, useValue: req },
        { provide: RESPONSE, useValue: res }
      ] });
    }
  });

我检查传入的 url 是否包含“资源”,如果包含,则删除“%20”的所有实例并将其替换为连字符。当我点击原始 url (<base_url>/resources/Example%20Url) 时,我看到该 url 确实获得了多个 301 重定向,但最后,我收到一个失败的请求,带有 ERR_TOO_MANY_REDIRECTS 并且我没有被重定向到新的 url如下面的屏幕截图所示。如何解决此问题并将旧网址重定向到新网址?重定向 url 的网络性能

标签: angularserver-side-renderinghttp-status-code-301

解决方案


推荐阅读