我不知道这个问题是否允许。如果不行,请原谅我:)
无论如何,我有一个用于 nginx 重定向的映射规则
/hotel/xyz/abc /hotel/xyz/abc-nana;
/hotel/xyz/abc/ /hotel/xyz/abc-nana;
~^/hotel/xyz/abc\?(.*) /hotel/xyz/abc-nana?$1;
我的问题是,它们可以合并成一条规则吗?我不太了解正则表达式
答案1
我假设xyz
并abc
指的是任何字母数字字符串。然后你要寻找这样的规则:
location ~ ^/hotel/([0-9a-z]+)/([0-9a-z]+)/?$ {
rewrite ^ http://$host/hotel/$1/$2-nana$is_args$args permanent;
}
(0-9a-z]+)
匹配任何具有一个或多个匹配项的字母数字字符串。结果存储在$1
和$2
变量中。最后一个斜线匹配是可选的(?
指定 0 或 1 个匹配项)。
在 nginx 中,无法在location
orrewrite
语句中匹配查询参数。但是,如果您只想添加可能的查询参数而不修改重定向,那么$is_args$args
就足够了。