regex - 在 Nginx 中,如何匹配整个 URL 和查询字符串并重定向到 URL 和查询字符串

标签 regex nginx seo nginx-location

我已经搜索了一段时间,尝试了解决方法,但没有找到任何有用的东西。

我有一个来自站点迁移的 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 

提前致谢, 保罗。

最佳答案

$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了解详情。

关于regex - 在 Nginx 中,如何匹配整个 URL 和查询字符串并重定向到 URL 和查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36083010/

相关文章:

phpredis 错误在 Linux 中找不到类 Redis

ssl - 重定向 https ://www to https://

dynamic - 数据库驱动网站上的 SEO

python - 我的正则表达式在网上的表现与在 python 中的表现不同

java - 正则表达式\\s*,\\s*有什么作用?

c++ - 当正则表达式匹配重叠时会发生什么?

node.js - 我必须包括 :433 to access HTTPS on AWS Elastic Beanstalk

regex - 从 URL 中删除不需要的字符

language-agnostic - 内容本地化领域最佳实践

python - 从单词中删除数字