【问题标题】:Nginx location blocks not matching as intended?Nginx 位置块与预期不匹配?
【发布时间】:2014-09-12 15:06:12
【问题描述】:

我们最近创建了一个新网站,该网站打破了旧网站中的许多丑陋网址。现在那些丑陋的 URL 得到了 404 响应。我们希望修复其中一些链接,因为它们破坏了我们合作伙伴的一些网站,这些网站曾经链接到它们。

在我的 nginx 配置中,我有:

location = /index.cfm?pagepath=Grain_Marketing&id=15404 {
    return 301 $scheme://www.[redacted].com/grain-marketing/;
}

location /index.cfm {
    return 301 $scheme://www.[redacted].com/;
}

第一个位置块似乎根本不起作用。第二个确实有效。我们希望第二个充当“包罗万象”的角色,如果第一个完全匹配,则应使用第一个。

我试过了:

  • 位置~*
  • 位置
  • 位置 =

...但似乎无法让它工作。

编辑: 我现在试过了,还是不行。

location /index.cfm {
    rewrite index\.cfm\?/pagepath=Grain_Marketing $scheme://www.[redacted].com/grain-marketing/ permanent;
    return 301 $scheme://www.[redacted].com/;
}

【问题讨论】:

    标签: regex url redirect nginx


    【解决方案1】:

    没关系,我想通了。这是因为位置似乎没有看到参数。这是解决方案:

    location /index.cfm {
    
        if ($args ~* pagepath=Grain_Marketing) {
            return 301 $scheme://www.[redacted].com/grain-marketing/;
        }
    
        return 301 $scheme://www.[redacted].com/;
    
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 2020-02-22
      • 1970-01-01
      • 2021-09-05
      相关资源
      最近更新 更多