【问题标题】:How to redirect a http request with apache / django如何使用 apache/django 重定向 http 请求
【发布时间】:2010-10-14 01:03:44
【问题描述】:

我在 Django 中创建了一个简单的站点。我使用的网址是 http::/www.example.com/nl/ 和 http://www.example.com/fr/。

我的 Django urls.py 有以下行:

(r'^(?Pnl|fr)/', 'example.views.index'),

在 example.views.index 我检查语言参数。如果它是“nl”,我会显示一个模板。如果是“fr”,我会显示不同的模板。

这很好用。现在客户制作了两个不同的网址:

http://www.dutch.com/ 和 http://www.french.com/

最后我要问这个问题:

有没有办法让我在不更改我的 django 代码的情况下使用新的 url?我假设当用户转到http://www.dutch.com/ 时,我可以告诉 apache 显示http://www.example.com/nl/ 页面。但是我该怎么做呢? django 还能从 url 中获取 'language' 参数吗?

提前感谢您的任何回答。

【问题讨论】:

  • 请务必注意,不能转到dutch.com/nl。
  • 那么,您想要的是将所有内容从 dutch.com 重定向到 example.com/nl 吗?
  • 这正是我想要的,安迪。同样重要的是我仍然可以访问 Django 中的“nl”。

标签: django apache django-urls


【解决方案1】:

如果您可以在 http://www.dutch.com 上使用 .htaccess 文件,那么您可以像这样使用 apache 的重定向指令

redirectMatch 301 ^(.*)$ http://www.example.com/nl/

这会将发送到 dutch.com 的所有请求重定向到 example.com/nl

你也可以使用

redirect 301 /index.html http://www.example.com/nl/

这只会将 dutch.com 上的“index.html”重定向到 example.com/nl/(请注意,第一个参数是路径,不能是 URL - 不是 http://www)

【讨论】:

  • 这听起来可能是我需要的。然而,用户会看到什么?浏览器 url 会更改为 www.example.com/nl 还是会保留在 dutch.com 上?
  • 另外,如果 index.html 页面有一个指向 '../fr/index.html' 的链接,当我点击它时会发生什么?它会转到 example.com/fr/index.html 还是会出错,因为我无法在 dutch.com 上打开一个文件夹?
  • 是的,URL 将更改为 example.com/nl,所以第二件事应该没有问题。如果他没有查看 URL,用户甚至可能不会注意到。第二个问题没有发生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 2011-11-01
  • 2017-06-19
  • 2020-10-11
相关资源
最近更新 更多