django flatpage重定向

时间:2009-10-26 20:26:16

标签: python django django-flatpages

我想确保我的所有flatpages都有www子域名,如果他们没有,则重定向到它。

我看过一些重定向到www的中间件,但是(1),他们通常会将所有网址重定向到www和(2),我发现的那些不起作用与flatpages。

我不希望我的所有网站网址都重定向到包含www子域名,只包括flatpages。

任何人都知道我应该怎么做呢?

2 个答案:

答案 0 :(得分:0)

一种选择是修改中间件,以便仅在response.status_code == 404时重定向。将中间件放在settings.py中的flatpage中间件之前。这将重定向

http://example.com/flatpage/ -> http://www.example.com/flatpage/

但也

http://example.com/invalidurl/ -> http://www.example.com/invalidurl/

在返回404错误之前。


另一种选择是根据官方中间件编写自己的平面中间件。您可以在django website上查看FlatpageFallbackMiddleware课程的代码。

在try,except块中,检查是否存在平面页。然后,如果适当,重定向。如果您不重定向,请返回平面页。

...
try:
    fp = flatpage(request, request.path_info)

    # Code to redirect to www goes here

    return fp
except Http404:
...

答案 1 :(得分:0)

在你的urls.py文件中执行以下操作:

urlpatterns = patterns('',
    (r'^flat/(?P<static>.*)$', 'django.views.generic.simple.redirect_to', {'url': 'http://www.mysite.com/flat/%(static)s'}),
    # other stuff
)