У меня есть веб-сайт, работающий на настраиваемом 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;
}
Видеть эта ссылка за помощью с регулярными выражениями.