Назад | Перейти на главную страницу

nginx - 301 редирект / subfolder1 / some-friendly-url-12345 в / subfolder2 / some-friendly-url

Я новичок в nginx.

У меня есть старый URL / aaaaa / some-friendly-url-12345 и я хочу 301 перенаправить эти URL-адреса на новый, но без идентификаторов, например / bbbbb / какой-то дружественный URL.

Я также хочу перенаправить / ааааа / к / bbbbb /

Я пробовал расположение директивы, но я почему-то не смог добиться успеха.

Это один из тех, что я пробовал:

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

Спасибо.

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

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

Что также можно переписать, используя rewrite выражение:

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

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