Заработало как надо в такой конфигурации:
error_page 404 =404 /404.html;
location ~* \.php$ {
include fastcgi_def;
include add/cachephp;
if ($request_uri ~ /(.+)/page-\d+\.html) {
error_page 404 = @page;
}
fastcgi_intercept_errors on;
}
location / {try_files $uri /index.php?$args;}
location @page {
if ($request_uri ~ /(.+)/page-\d+\.html) {return 301 /$1.html;}
return 410;
}
Спасибо Алексей Тен, за наводку. Предыдущая конфигурация
location @page {
rewrite /(.+)/page-\d+\.html /$1.html redirect;
return 404;
}
Не работала, т.к. в @page попадает уже преобразованный запрос, который отправлялся на index.php, чтобы сформировать редирект надо использовать исходный запрос.