Я хочу удалить разбиение на страницы со всех URL, кроме тех, которые содержат / page / [0-9]
example
Удалить разбиение на страницы:
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/
В настоящее время using:
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' с блоком местоположения?
Я не знаю, поддерживает ли nginx отрицательный просмотр вперед, поэтому я бы предложил использовать что-то вроде:
rewrite ^(/([^p]|p([^a]|a([^g]|g([^e]|e[^/])))).*/)[0-9]+/?$ $1 permanent;
, который в основном соответствует каждому «разбитому на страницы» -запросу (как в ваших примерах), не начиная с page /