Nginx 重写部分 URL

Nginx 重写部分 URL

我正在尝试从带有选项 ID 的 URL 重定向到带有我已分配的选项 URL_key 的 URL。

我有两列表格,其中 ID 我想要替换,URL_key 作为替换。

11337 酒吧 11419 餐厅 11399 咖啡厅 15477 绘画

我现在有以下 URL:

ifab.ru/art/kartiny/location/11399/style/15477

我想重定向到:

ifab.ru/art/kartiny/location/cafe/style/painting

您可能会说我可以从网站中获取所有 URL 并用 replace 进行替换,但它们是自动生成的,并且每个组合可能彼此不同,所以我想捕获 ID 并将其重写为 URL_key。

任何想法和解决方案都值得赞赏。

我们的服务器在 nginx 上运行,没有 apache。

答案1

这应该有效:

map $loc $loc_text {
    11337 bar;
    11419 restaurant;
}

map $style $style_text {
    15477 painting;
}

rewrite ^/art/kartiny/location/(?P<loc>\d+)/style/(?P<style>\d+)$ 
    /art/kartiny/location/$loc_text/style/$style_text
    redirect;

也可以看看http://nginx.org/en/docs/http/server_names.html#regex_names

相关内容