Google Cloud App Engine 将所有 /*.html 结尾重定向到 /?

Google Cloud App Engine redirect all /*.html endings to /?

我在 Internet 上有很多包含 .html 结尾的反向链接。例如。 https://mywebsite.de/blog.html 但同时我所有的网站都以 https://mywebsite.de/blog 的形式提供。 我使用 Flask 后端,但找不到将这些 .html 结尾重定向到 / 的解决方案。 是否可以为此使用 app.yaml 配置文件? 也许是这样的:

handlers:
- url: /*.html
{define here the redirect}

我在文档中发现没有任何帮助。 https://cloud.google.com/appengine/docs/standard/python/config/appref?hl=de#handlers_element

您需要在 Flask 中执行此操作。我看到两个主要选项。

(1) 您可以创建使用正则表达式匹配的 Flask 路由。然后匹配所有以 .html 结尾的路由并进行重定向。

(2) 在函数上使用@app.before_request,检查request.url是否以.html结尾,然后重定向。

请注意,Flask 中的 redirect 默认为 302,您可能需要指定 301 重定向。

正如 gaefan 所建议的那样,我用 Flask 本身解决了这个问题。我的解决方案如下所示:

@app.route('/blog/<slug>.html')
def html_redirect(slug):
    return redirect(f"https://mywebsite.de/blog/{slug}" ,code=301)

注意:这只重定向到 /blog 的子站点。不只是任何包含“.html”结尾的东西。