如何简化Nginx的映射正则expression式的规则?

我不知道这个问题是否被允许。 如果没有,原谅我:)
无论如何,我有一个nginxredirect映射规则

/hotel/xyz/abc /hotel/xyz/abc-nana; /hotel/xyz/abc/ /hotel/xyz/abc-nana; ~^/hotel/xyz/abc\?(.*) /hotel/xyz/abc-nana?$1; 

我的问题是,他们可以合并成一个规则? 我不太了解正则expression式

我假设xyzabc是指任何字母数字string。 那么你正在寻找一个像这样的规则:

 location ~ ^/hotel/([0-9a-z]+)/([0-9a-z]+)/?$ { rewrite ^ http://$host/hotel/$1/$2-nana$is_args$args permanent; } 

(0-9a-z]+)匹配任何具有一个或多个匹配的字母数字string。 结果存储在$1$2variables中。 最后的斜线匹配是可选的( ?指定0或1匹配)。

在nginx中,不能匹配locationrewrite语句中的查询参数。 但是,如果您只想添加可能的查询参数而不修改redirect,那么$is_args$args就足够了。