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

Удалите идентификатор или номер из URL-адреса с помощью nginx rewrite

У меня есть веб-сайт, работающий на настраиваемом CSM. Однако, когда он стал больше, нам пришлось перенести его на wordpress.

На старой CMS у нас была структура URL-адресов для статей, подобная этой:

https://example.com/parent-category/child-category/7564-title-of-the-article
https://example.com/parent-category
https://example.com/parent-category/child-category

Мы бы хотели перенаправить все запросы на старые статьи в эту структуру

https://example.com/title-of-the-article
https://example.com/category/parent-category
https://example.com/category/parent-category/child-category

Здесь категория - это ярлык wordpress для категории

Я пробовал некоторые правила перенаправления в nginx, однако оказалось, что я плохо разбираюсь в регулярных выражениях. Я невежественен. Пожалуйста, помогите мне это сделать. Я не знаю, куда обратиться.

Было бы очень признательно.

Обновление: отредактирована исходная структура ссылок, чтобы сгладить путаницу по поводу того, что «категория» является статической слагом. Это не. Есть несколько категорий и подкатегорий:

https://example.com/review/app/734-title-of-the-post
https://example.com/news/546-title-of-the-post
https://example.com/blog/opinion/456-title-of-the-post

Используйте следующие RewriteRules. Он должен работать в соответствии с вашим требованием.

https://example.com/parent-category/child-category/7564-title-of-the-article

RewriteRule ^/parent-category/([^\/]+)/([0-9]+)-([^\/]+)$ /parent-category/$1/$3 [R=301,L,NE]

https://example.com/parent-category/546-title-of-the-post

RewriteRule ^/parent-category/([0-9]+)-([^\/]+)$ /parent-category/$2 [R=301,L,NE]

Если предположить, что «категория» буквальная, а «что-то» - это заполнитель, для вас может сработать что-то вроде этого:

rewrite ^/category/[^/]+/\d+-(.+)$ /$1 permanent;

Если только старые CMS URI начинаются с /category, вы можете поместить перезапись внутри блока местоположения для повышения эффективности:

location ^~ /category/ {
    rewrite ^/category/[^/]+/\d+-(.+)$ /$1 permanent;
}

Видеть эта ссылка за помощью с регулярными выражениями.