在 Nginx 中,如何匹配和整个 URL 和查询字符串并重定向到 URL 和查询字符串
In Nginx, how to match and entire URL and Query String and redirect to a URL and Query String
我已经搜索了一段时间,尝试变通,但没有找到任何有用的东西。
我有一个来自站点迁移的 URL 的(大)列表,需要匹配整个 URL + 查询字符串并重定向到另一个 URL。
据我所知,以下仅匹配 /mens
,但不匹配查询字符串的其余部分。
rewrite "^/mens?brand%5B%5D=27§ion%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
提前致谢,
保罗.
$request_uri
变量包含整个 URL。您可以使用 map
将其转换为重定向。
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; }
...
}
详情见this document。
我已经搜索了一段时间,尝试变通,但没有找到任何有用的东西。
我有一个来自站点迁移的 URL 的(大)列表,需要匹配整个 URL + 查询字符串并重定向到另一个 URL。
据我所知,以下仅匹配 /mens
,但不匹配查询字符串的其余部分。
rewrite "^/mens?brand%5B%5D=27§ion%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
提前致谢, 保罗.
$request_uri
变量包含整个 URL。您可以使用 map
将其转换为重定向。
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; }
...
}
详情见this document。