Nginx将旧网址重定向到新站点

时间:2020-05-13 22:46:21

标签: nginx url-rewriting

我们已经迁移了一个旧站点,并且在域名保持不变的情况下,有数百个旧站点中的旧URL具有我们要保留的SEO值并重定向到新站点。

  • 新站点在https://www.mysite.co.uk / https://mysite.co.uk上运行
  • 我们要重定向的旧链接的格式为https://[language_code].mysite.co.uk/[page]

例如,https://it.mysite.co.uk/banana应该重定向到https://mysite.co.uk/it/foo/bar/banana

我认为我需要创建一个额外的服务器块来处理*.mysite.co.uk(在服务server_name mysite.co.uk www.mysite.co.uk的服务器块之后,以至于www的网址不会被它捕获)然后使用正则表达式进行重定向,例如:

server {
  listen 443 ssl;

  server_name *.mysite.co.uk;
  rewrite ... permanent;
}

我不知道如何处理该重写,而且我是否必须为所有这些语言环境子域生成SSL证书,还是在需要加载证书之前进行重定向?

1 个答案:

答案 0 :(得分:0)

这些语言子域将需要有效的证书,以便客户端的浏览器接受重定向到您的新网站。由于它们位于同一主域下,因此可以使用通配符证书。

正则表达式server_name可用于从主机名中提取语言代码,以便可用于构造新的URL。

例如:

server {
    listen 443 ssl;
    server_name ~^(?<lang>..)\.example\.com$;

    ssl_certificate ...;
    ssl_certificate_key ...;

    return 301 $scheme://example.com/$lang/foo/bar$request_uri;
}

有关详细信息,请参见this document