Nginx

NGINX 301 將帶有參數的 URL 重定向到新 URL

  • February 4, 2014

我已經實時部署了一個站點,並嘗試將一些原始 URL 重定向到新 URL。對於像這樣的重定向,我對 NGINX 配置相當陌生。

這個有效:

location /contactus.aspx {
   return 301 $scheme://$host/contacts;
}

這些不起作用(網址導致 404 並且不重定向):

location /productcatalog.aspx?directoryid=11 {
   return 301 $scheme://$host/hard-drive-cases;
}
location /productdetails.aspx?productid=26* {
   return 301 $scheme://$host/lto-5-blue;
}

我已經service nginx reload成功沒有錯誤。

有效的重定向和無效的重定向之間的最大區別在於添加的參數。使用參數(以及末尾的萬用字元)重定向 URL 以使其正常工作的最佳方法是什麼?

location指令與查詢字元串不匹配。所以你必須做其他事情。

我想你有很多這些可以使用,所以我建議使用幾個maps。例如:

map $arg_directoryid $mycategory {
   11 hard-drive-cases;
   12 some-other-category;
   default ""; # would go to the homepage, change it to go to some other page
}

然後你會做一個location這樣的:

location /productcatalog.aspx {
   return 301 $scheme://$host/$mycategory;
}

製作第二個map和對應location於。但是,如果那個異常大,您可能會遇到性能問題,並且需要廢棄它並編寫一些腳本以從數據庫中獲取重定向。$arg_productid``productdetails.aspx

maps 必須在您的塊http中,而不是在server塊中。如果您託管多個站點,那麼在我看來,放置它們的最佳位置是server它們對應的塊之前。

引用自:https://serverfault.com/questions/571966