NGINX: reconfigurar segmento de URL numérico com prefixo

1

Eu pretendo que algumas URLs antigas funcionem com o novo CMS para o qual estamos migrando, mas não é compatível com slugs de URLs puramente numéricos por algum motivo, então o novo sistema as tem como "/ calendar / event / old-42 "em vez de" / calendar / event / 42 ". Eu gostaria de redirecionar essas URLs puramente numéricas para suas novas slugs. Aqui está o que eu tinha em mente para fazer isso:

location ~ /calendar/event/(\d+)$ {
  rewrite ^/calendar/event/$1$ /calendar/event/old-$1 permanent;
}

Isso parece não estar funcionando, e apenas 404s quando eu vou para "/ calendar / event / 42". Alguma idéia?

    
por huertanix 10.07.2015 / 01:26

1 resposta

3

Tente este local:

location ~ ^/calendar/event/(?<slug>\d+)$ {
    rewrite ^ /calendar/event/old-$slug permanent;
}

Você não precisa fazer correspondência de regex complexa em rewrite , quando todo o material necessário é feito dentro da location regex. Um possível motivo para a falha de reescrita é o uso de variável numérica de localização.

    
por 10.07.2015 / 11:39