如何在遗留 Flask 应用程序中实现个性化 URL?

How to implement vanity URLs in a legacy Flask app?

我遇到一个问题,我需要将旧版 Flask 应用程序中的现有 URL 重定向或替换为更 "vanity" URL 的方案。

例如:

www.example.org/camp -> 确实指向 https://example.org/connect/rally_camps/register

虽然我设法使用 nginx 配置完成这项工作(这是使用典型的 uwsgi + 反向代理 nginx 配置作为 serverd):

location /camp {
       rewrite ^/.* https://example.org/connect/rally_camps/register permanent;
}

当我点击虚荣心时 URL 我被重定向到非虚荣心 URL(长)。这显然看起来很难看......我不确定是否有办法告诉 nginx 重定向但保持不变 URL 或者这需要一些 Flask 工作......当用户点击虚荣心时 301 重定向 URL 长 URL 也许吧?但我认为这会再次改变 URL...有什么想法吗?

谢谢!

假设您不需要捕获 /camp/ 之后的任何内容,这个 nginx 配置应该可以做到:

location /camp {
       rewrite ^/.* /connect/rally_camps/register ;
}

来自nginx docs for rewrite

If a replacement string starts with “http://”, “https://”, or “$scheme”, the processing stops and the redirect is returned to a client.

换句话说,如果您不想要重定向,则替换字符串不能以这些前缀中的任何一个开头。

permanent 标志也会产生重定向,因此您也不能使用它。