我想确保我所有的页面都有www
子域,如果它们没有,则重定向到它。我看过一些重定向到www
的中间件,但是(1),他们通常会将所有的url重定向到www
和(2),我发现这些中间件不能使用flatpages。django flatpage重定向
我不希望我所有的网站网址都重定向到包含www子网域,只是网页。
任何人都知道我应该怎么做呢?
我想确保我所有的页面都有www
子域,如果它们没有,则重定向到它。我看过一些重定向到www
的中间件,但是(1),他们通常会将所有的url重定向到www
和(2),我发现这些中间件不能使用flatpages。django flatpage重定向
我不希望我所有的网站网址都重定向到包含www子网域,只是网页。
任何人都知道我应该怎么做呢?
一种选择是修改中间件,以便只在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:
...
在你的urls.py文件中做这样的事情:
urlpatterns = patterns('',
(r'^flat/(?P<static>.*)$', 'django.views.generic.simple.redirect_to', {'url': 'http://www.mysite.com/flat/%(static)s'}),
# other stuff
)
-1:这将创建一个无限重定向。 'mysite.com/flat/page' - >'www.mysite.com/flat/page' - >'www.mysite.com/flat/page' - > ... – Alasdair 2009-10-29 00:31:16