Я новичок в 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;
Видеть этот документ для большего. Также, этот ресурс для регулярных выражений.