O que você está fazendo com o número da página?
De qualquer forma, supondo que id-of-*
e número da página possam ser representados por pelo menos um caractere de intervalo [0-9]
e category-name
e ad-title
podem ser representados por pelo menos um caractere de intervalo [_-a-zA-Z0-9]
:
location ~ ^/category/(\d+)/?\d*/[-\w]+\.html$ {
return 301 $scheme://$server_name/?cat=$1;
}
location ~ ^/category/\d+/[-\w]+/listings/(\d+)/[-\w]+\.html$ {
return 301 $scheme://$server_name/?p=$1;
}
Observe que as expressões regulares nginx são um pouco específicas, mas muito poderosas (por exemplo, adicionar sinal de menos ao intervalo alfanumérico sem a necessidade de reescrever todo o intervalo [-_a-zA-Z0-9]
detalhadamente como faria com o grep, por exemplo).
Atualizar : grupo de catpure de segundo local fixo.