我不知道这个问题是否被允许。 如果没有,原谅我:)
无论如何,我有一个nginxredirect的映射规则
/hotel/xyz/abc /hotel/xyz/abc-nana; /hotel/xyz/abc/ /hotel/xyz/abc-nana; ~^/hotel/xyz/abc\?(.*) /hotel/xyz/abc-nana?$1;
我的问题是,他们可以合并成一个规则? 我不太了解正则expression式
我假设xyz和abc是指任何字母数字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中,不能匹配location或rewrite语句中的查询参数。 但是,如果您只想添加可能的查询参数而不修改redirect,那么$is_args$args就足够了。