NGINX:使用前缀重写数字 URL 段

NGINX:使用前缀重写数字 URL 段

我的目标是让一些旧 URL 与我们要迁移到的新 CMS 兼容,但由于某种原因,它无法支持纯数字 URL 段,因此新系统将它们显示为“/calendar/event/old-42”而不是“/calendar/event/42”。我想将这些纯数字 URL 重定向到它们的新段。以下是我打算这样做的原因:

location ~ /calendar/event/(\d+)$ {
  rewrite ^/calendar/event/$1$ /calendar/event/old-$1 permanent;
}

这似乎不起作用,当我转到“/calendar/event/42”时,只会出现 404 错误。有什么想法吗?

答案1

尝试这个位置:

location ~ ^/calendar/event/(?<slug>\d+)$ {
    rewrite ^ /calendar/event/old-$slug permanent;
}

您无需在 中进行复杂的正则表达式匹配rewrite,因为所有必要的操作都在正则表达式中完成location。重写失败的一个可能原因是使用了位置中的数值变量。

相关内容