我想检查nginx的url中是否存在参数,然后重写。我该怎么办?
URL中的颜色是动态的
例如
如果url为http://website.com/lunch-box/xxxxxabc
,则将用户重定向到http://website.com/lunch-box/
。
如果URL为http://website.com/lunch-box/xxxxxabc/ABCD123
,则无需重定向。需要按原样加载。
如果URL匹配,我想重定向。而
xxxxxabc
是动态文本。
nginx version: nginx/1.16.1
答案 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/xxewwwdewsvsd
或http://website.com/lunch-box/xx353f33
重定向到
http://website.com/lunch-box/
如果http://website.com/lunch-box/xxxxxabc/ABCD123
不执行任何操作。