【发布时间】:2019-09-08 01:47:57
【问题描述】:
我提前向这个问题道歉,因为这个问题被问了很多次,但我找不到可以解决这个问题的 Django 特定解决方案。
说明:
- Django:2.1
- Python:3.7
- 应用宿主:谷歌应用引擎
- 域提供者: 谷歌域
我有一个托管在谷歌应用引擎上的 Django 应用,其 URL 为 [id].appspot.com。我还注册了一个自定义域,例如谷歌域上的 www.example.com。我想将任何尝试访问 [id].appspot.com 的人重定向到 www.example.com 永久(301)。我的自定义域运行良好。
到目前为止,基于 google 和 stackoverflow 搜索,我发现了以下内容:
<link rel="canonical" href="https://www.example.com/" />
当多个域提供相同的内容时,这应该会通知搜索引擎您更喜欢哪个域。我已将此添加到我的站点标题中,但这似乎是一种解决方法。
- Use check and redirect function:这篇文章为 webapp2 应用提供了一些很好的方法。然而,这是 10 年前的帖子,所以不确定这些解决方案中的任何一个是否可以直接工作或可能需要更改代码。
在答案“Alex Martelli”中建议检查 os.environ['HTTP_HOST'].endswith('.appspot.com') 并重定向。我不确定如何在应用程序引擎上托管的 Django 应用程序中完成它。
在同一篇文章中,还有另一种方法可以通过覆盖 webapp2.RequestHandler.initialize 来实现。但我再次认为它不适用于 Django。
我正在寻找 Django 特定的答案,无论是 app.yaml 或 dispatch.yaml 中类似于 blog post 的重定向设置还是 django 函数覆盖以从 [id].appspot.com 重定向到 www.example.com。
【问题讨论】:
标签: django python-3.x google-app-engine