我的目标是让一些旧 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
。重写失败的一个可能原因是使用了位置中的数值变量。