nginx重写正则表达式匹配第一组而不是所有



我正在编写一个nginx重写规则来重定向:

/收藏/集合名称/产品/product-handle-with-dashes

:

/产品/product-handle-with-dashes

我已经让它几乎工作了,我现在唯一的问题是,如果我的规则匹配产品句柄只返回第一个字符串之前的第一个连字符。

我的规则:rewrite ^(/collections/.*)/products/(w+).?.*$ /products/$2 permanent;

如果我点击以下路径:/collections/collection-name/products/some-product-handle,它会重定向到/products/some

我在我的正则表达式上错过了什么,以允许它作为我的第二个变量来捕获整个句柄与破折号。

w元字符的PCRE/PCRE2正则表达式模式包括范围a-z,A-Z,0-9的字符下划线。它不包括连字符。您可能需要[-w]。整个重写规则可以是

rewrite ^/collections/[^/]+(/products/[-w]+)(.w+)?$ $1 permanent;

最新更新