![Nginx 重写部分 URL](https://linux22.com/image/648614/Nginx%20%E9%87%8D%E5%86%99%E9%83%A8%E5%88%86%20URL.png)
我正在尝试从带有选项 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