Nginx
NGINX 301 將帶有參數的 URL 重定向到新 URL
我已經實時部署了一個站點,並嘗試將一些原始 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
指令與查詢字元串不匹配。所以你必須做其他事情。我想你有很多這些可以使用,所以我建議使用幾個
map
s。例如: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
map
s 必須在您的塊http
中,而不是在server
塊中。如果您託管多個站點,那麼在我看來,放置它們的最佳位置是server
它們對應的塊之前。