NGINX: Перепишите числовой сегмент URL с префиксом

Я стремлюсь иметь некоторую старую работу URL с новым CMS, на который мы мигрируем, но это не может поддерживать чисто числовые краткие заголовки URL по некоторым причинам, таким образом, новая система имеет их как "/calendar/event/old-42" вместо "/calendar/event/42". Я хотел бы перенаправить эти чисто числовые URL к их новым кратким заголовкам. Вот то, что я имел в виду, чтобы сделать это:

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

Это, кажется, не работает, и всего 404 с, когда я перехожу к "/calendar/event/42". Какие-либо идеи?

1
задан 10 July 2015 в 02:26
1 ответ

Попробуйте это местоположение:

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

Вам не нужно выполнять сложное сопоставление регулярных выражений в rewrite , когда все необходимые действия выполняются в местоположении ] регулярное выражение. Одной из возможных причин неудачной перезаписи является использование числовой переменной из местоположения.

3
ответ дан 3 December 2019 в 18:38

Теги

Похожие вопросы