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.
Если вы переместите $
в конец, регулярное выражение должно работать в ограниченных случаях. Его можно улучшить, сделав совпадение только числовых значений последнего термина (чтобы вы не полагались на жадность первого захвата). Например:
location ~ ^/aaaaa/(?<a_slug>.*)-\d+$ {
return 301 /bbbbb/$a_slug;
}
Который также может быть переписан с использованием выражения rewrite
:
rewrite ^/aaaaa/(.*)-\d+$ /bbbbb/$1 permanent;
Подробнее см. этот документ . Кроме того, этот ресурс для регулярных выражений .