Nginx

NGINX:用前綴重寫數字 URL 段

  • July 10, 2015

我的目標是讓一些舊 URL 與我們正在遷移到的新 CMS 一起使用,但由於某種原因它不能支持純數字 URL slug,因此新系統將它們設置為“/calendar/event/old-42 " 而不是 “/calendar/event/42”。我想將這些純數字 URL 重定向到他們的新 slug。這是我的想法:

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

這似乎不起作用,當我轉到“/calendar/event/42”時只有 404 秒。有任何想法嗎?

試試這個位置:

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

rewrite當所有必要的東西都在正則表達式中完成時,您不需要在 中進行複雜的正則表達式匹配location。重寫失敗的一個可能原因是使用了來自位置的數值​​變數。

引用自:https://serverfault.com/questions/704761