【问题标题】:Nginx redirect old urls to new siteNginx 将旧网址重定向到新网站
【发布时间】:2020-05-13 22:46:21
【问题描述】:

我们迁移了一个旧站点,虽然域保持不变,但旧站点中有数百个具有 SEO 价值的旧 URL,我们希望保留并重定向到新站点。

  • 新站点运行在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 证书,或者重定向是否会在需要加载证书之前发生?

【问题讨论】:

    标签: nginx url-rewriting


    【解决方案1】:

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

    正则表达式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

    【讨论】:

      猜你喜欢
      • 2017-09-25
      • 2016-09-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      相关资源
      最近更新 更多