Nginx将动态URL重定向到另一路径

时间:2020-03-17 06:33:33

标签: regex nginx url-rewriting

我想检查nginx的url中是否存在参数,然后重写。我该怎么办?

URL中的颜色是动态的

例如

  1. 如果url为http://website.com/lunch-box/xxxxxabc,则将用户重定向到http://website.com/lunch-box/

  2. 如果URL为http://website.com/lunch-box/xxxxxabc/ABCD123,则无需重定向。需要按原样加载。

如果URL匹配,我想重定向。而xxxxxabc是动态文本。

nginx version: nginx/1.16.1

2 个答案:

答案 0 :(得分:0)

# rewrite direct children of /lunch-box but not grandchildren+
rewrite  ^(/lunch-box/)[^/]+/?$  $1  last;

遍历正则表达式^(/lunch-box/)[^/]+/?$

  • ^匹配字符串的开头(rewrite规则匹配路径,而不是完整URI)
  • (/lunch-box/)与文字文本/lunch-box/匹配并将其保存为$1
  • [^/]+匹配一个或多个非正斜杠的字符
  • /?匹配零或一个正斜杠
  • $匹配字符串的结尾

这会清除经过我们保存为$1的路径,但前提是该路径是直接子路径。

答案 1 :(得分:-1)

server {
    # ....

    rewrite ^/(lunch-box)/([\w\d]+)/?$ /$1/ last;

    # ....
}

这应该有效...逻辑:

如果http://website.com/lunch-box/xxewwwdewsvsdhttp://website.com/lunch-box/xx353f33
重定向http://website.com/lunch-box/

如果http://website.com/lunch-box/xxxxxabc/ABCD123不执行任何操作。

相关问题