2014-09-12 67 views
0

我們最近做了一個新網站,打破了很多來自舊網站的醜陋網址。現在這些醜陋的URL會得到404響應。我們希望修復這些鏈接中的一部分,因爲它們已經破壞了我們的一些合作伙伴的網站鏈接。Nginx的位置塊與預期不符?

在我的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/; 
} 

回答

0

沒關係,我弄明白了。這是因爲地點似乎沒有看到爭論。這是解決方案:

location /index.cfm { 

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

    return 301 $scheme://www.[redacted].com/; 

}