Django平面页面重定向
我想确保我所有的静态页面都有 www
这个子域名,如果没有的话就自动跳转到这个子域名。
我查了一些可以跳转到 www
的中间件,但(1)它们通常会把所有的网址都跳转到 www
,而(2)我找到的那些中间件对静态页面不管用。
我并不想让整个网站的所有网址都跳转到带有 www 的子域名,只想让静态页面这样做。
有没有人知道我该怎么做呢?
2 个回答
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
一种方法是修改一个中间件,这样它只在 response.status_code == 404
的时候进行重定向。把这个中间件放在 settings.py 文件中 flatpage 中间件的前面。这样做会在返回 404 错误之前进行重定向。
http://example.com/flatpage/ -> http://www.example.com/flatpage/
同时也会在返回 404 错误之前进行处理。
http://example.com/invalidurl/ -> http://www.example.com/invalidurl/
另一种方法是根据官方的中间件自己编写一个 flatpage 中间件。你可以在 django 网站上查看 FlatpageFallbackMiddleware
类的代码。
在 try 和 except 代码块中,检查是否存在 flatpage。如果合适的话就进行重定向。如果不进行重定向,就返回 flatpage。
...
try:
fp = flatpage(request, request.path_info)
# Code to redirect to www goes here
return fp
except Http404:
...