我想确保我的所有flatpages都有www
子域名,如果他们没有,则重定向到它。
我看过一些重定向到www
的中间件,但是(1),他们通常会将所有网址重定向到www
和(2),我发现的那些不起作用与flatpages。
我不希望我的所有网站网址都重定向到包含www子域名,只包括flatpages。
任何人都知道我应该怎么做呢?
答案 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
)