我想从所有 URL 中删除分页,但包含 /page/[0-9] 的 URL 除外
例子
删除分页:
https://www.example.com/some/thing/here/2/
https://www.example.com/some/thing/here/3/
https://www.example.com/some/thing/here/4/
这些将被重定向到
https://www.example.com/some/thing/here/
https://www.example.com/some/thing/here/
https://www.example.com/some/thing/here/
我们目前正在使用:
rewrite ^(.*/)[0-9]+/?$ $1 permanent;
效果很好,但如果 URL 包含如下页面,我们希望排除重定向:
https://www.example.com/page/2/?s=somesearch
https://www.example.com/page/3/?s=somesearch
https://www.example.com/page/4/?s=addition
尝试了几次,例如:
rewrite ^(.*/)(?!page/[0-9]+)[0-9]+/?$ $1 permanent;
我是否需要在这里将“if”与位置块一起使用?
答案1
我不知道 nginx 是否支持负向前瞻,因此我建议使用类似以下内容:
rewrite ^(/([^p]|p([^a]|a([^g]|g([^e]|e[^/])))).*/)[0-9]+/?$ $1 permanent;
它基本上匹配每一个不以开头的“分页”请求(比如你的例子)page/