Подскажите с реальными примерами, бо я ничего не понял.
Вот на этом сайте (это исключительно для этого сайта, для других это не нужно, т.к. здесь была миграция с InstantCMS 1.X)
[
{ "source": "#^about/([a-zA-Z0-9]+).html$#i", "target": "/about.html", "action": "redirect-301" },
{ "source": "#^download.html$#i", "target": "/get", "action": "redirect-301" },
{ "source": "#^catalog(.*)$#i", "target": "https://instantcms.ru/", "action": "redirect-301" },
{ "source": "#^wiki$#i", "target": "https://docs.instantcms.ru/", "action": "redirect-301" },
{ "source": "#^wiki\/(.*)$#i", "target": "https://docs.instantcms.ru/", "action": "redirect-301" },
{ "source": "#^rss\/content\/2\/feed.rss$#i", "target": "rss/feed/pages?category=2", "action": "rewrite" },
{ "source": "#^rss\/blogs\/all\/feed.rss$#i", "target": "rss/feed/blogs", "action": "rewrite" },
{ "source": "#^rss\/comments\/all\/feed.rss$#i", "target": "/rss/feed/comments", "action": "redirect-301" },
{ "source": "#^users\/([0-9a-z_]+)\/forumposts.html$#i", "target": "/users/{1}/forum", "action": "redirect-301" },
{ "source": "#^users\/([0-9a-z_]+)\/karma.html$#i", "target": "/users/{1}/karma", "action": "redirect-301" },
{ "source": "#^users\/([0-9a-z_]+)\/comments.html$#i", "target": "/users/{1}/comments", "action": "redirect-301" },
{ "source": "#^novosti\/page-([0-9]+)$#i", "target": "/novosti?page={1}", "action": "redirect-301" },
{ "source": "#^blogs\/latest-([0-9]+).html$#i", "target": "/blogs?page={1}", "action": "redirect-301" },
{ "source": "#^registration$#i", "target": "/auth/register", "action": "redirect-301" },
{ "source": "#^users\/([0-9]+)\/files.html$#i", "target": "/users/{1}/files", "action": "redirect-301" }
]
Или с параметрическими не получится?
Получится. Просто вопросы и другие спецсимволы регулярных выражений нужно экранировать обратным слэшем: по факту двумя — первый экранирует сам спецсимвол, второй слэш — первый слеш — синтаксис json.
[
{
"source": "board\\?city=500",
"target": "/get",
"action": "board/moygorog"
}
]