2009-10-26 84 views
1

我想确保我所有的页面都有www子域,如果它们没有,则重定向到它。我看过一些重定向到www的中间件,但是(1),他们通常会将所有的url重定向到www和(2),我发现这些中间件不能使用flatpages。django flatpage重定向

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

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

回答

0

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

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

而且

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


另一种选择是编写基于官方的flatpage中间件。您可以在django website上看到FlatpageFallbackMiddleware课程的代码。

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

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

    # Code to redirect to www goes here 

    return fp 
except Http404: 
... 
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 
) 
+0

-1:这将创建一个无限重定向。 'mysite.com/flat/page' - >'www.mysite.com/flat/page' - >'www.mysite.com/flat/page' - > ... – Alasdair 2009-10-29 00:31:16