2010-11-10 239 views
1

我有一个Django项目,使用https对URL的某些部分(/ account /,/ admin /,/ purchase /)。Django相关网址和https

当以https模式在此页面之一上时,所有相关的内部链接{%url foo%}将指向https://my_url

但是我不希望有显示为HTTPS这些页面:主页,联系人......

什么是这种需求解决方案?

强制绝对url?

http://{{ domain }}{% url foo %} 

不太好。

回答

4

正如Tomasz所建议的,一种方法是设置中间件以根据需要重定向到https或从https重定向。这里的one implementation--这个想法是修饰那些应该在https下提供的视图,当用户导航到不应该安全的视图时,中间件会自动将它们重定向回页面的http版本。

+0

链接不工作 – andi 2014-05-13 11:06:46

4

想法:您可以使用自定义中间件从https重定向到http(或反之),以实现中心URL或URL模式。这也可以在Apache(或其他Web服务器)配置中完成。

2

可以使用您的web服务器重写为http,这种方式Django甚至不需要知道。

2

我觉得this snippet很好地照顾情况。需要SSL的视图将通过从http到https版本的url进行重定向,反之亦然。

是的,在https页面上,到站点中非https页面的出站链接仍将以https开头,但用户将被重定向到http版本。

(有一种疑难杂症,但是:如果你从HTTP发布到HTTPS,反之亦然它不会工作)