nginx - 301 redirect /subfolder1/some-friendly-url-12345 to /subfolder2/some-friendly-url

I'm a newbie on nginx.

I have some old url's like /aaaaa/some-friendly-url-12345 and I want to 301 redirect these url's to new one but without ID's, like /bbbbb/some-friendly-url.

I also want to redirect /aaaaa/ to /bbbbb/

I tried some location directives but I couldn't success somehow.

This is one of I tried:

location ~ /aaaaa/(?P<a_slug>.*)$-(?P<a_id>.*) {
   return 301 https://domain.com/bbbbb/$a_slug;
}

Thanks.

1
задан 24 January 2017 в 11:17
1 ответ

Если вы переместите $ в конец, регулярное выражение должно работать в ограниченных случаях. Его можно улучшить, сделав совпадение только числовых значений последнего термина (чтобы вы не полагались на жадность первого захвата). Например:

location ~ ^/aaaaa/(?<a_slug>.*)-\d+$ {
    return 301 /bbbbb/$a_slug;
}

Который также может быть переписан с использованием выражения rewrite :

rewrite ^/aaaaa/(.*)-\d+$ /bbbbb/$1 permanent;

Подробнее см. этот документ . Кроме того, этот ресурс для регулярных выражений .

0
ответ дан 4 December 2019 в 05:21

Теги

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