2

我一直在寻找一段时间,尝试解决方法并没有想出任何有用的东西。

我有一个(大)来自站点迁移的 URL 列表,需要匹配整个 URL + 查询字符串并重定向到另一个 URL。

据我所知,以下仅匹配/mens,而不是查询字符串的其余部分。

rewrite "^/mens?brand%5B%5D=27&section%5B%5D=5&price-min=0&price-max=2000&sort=newest"  "/t/gender/men" permanent;

这很重要的原因是我有一堆相似的 URL,它们的查询字符串略有不同,需要重定向,类似于下面,但实际上可以工作.... :-/

rewrite "^/mens/shop?q=road+map+polo"       "/t/category/golf-knits"    permanent;
rewrite "^/mens/shop?q=six+pocket+pant"     "/t/category/golf-pants"    permanent;

#etc... ad noiseam 

在此先感谢,保罗。

4

1 回答 1

3

$request_uri变量包含整个 URL。您可以使用 amap将其转换为重定向。

map $request_uri $target {
    ~*^/mens/shop\?q=road\+map\+polo   /t/category/golf-knits;
    ~*^/mens/shop\?q=six\+pocket\+pant /t/category/golf-pants;
}

server {
    ...
    if ($target) { return 301 $target; }
    ...
}

有关详细信息,请参阅此文档

于 2016-03-18T12:37:36.360 回答