我想确保我所有的平面页面都有www
子域,如果没有,则重定向到它。
我查看了一些重定向到的中间件www
,但是 (1),它们通常将所有 url 重定向到www
和 (2),我发现这些中间件不适用于平面页面。
我不希望我的所有网站 url 都重定向到包含 www 子域,只是平面页面。
有人知道我应该怎么做吗?
我想确保我所有的平面页面都有www
子域,如果没有,则重定向到它。
我查看了一些重定向到的中间件www
,但是 (1),它们通常将所有 url 重定向到www
和 (2),我发现这些中间件不适用于平面页面。
我不希望我的所有网站 url 都重定向到包含 www 子域,只是平面页面。
有人知道我应该怎么做吗?
在您的 urls.py 文件中执行以下操作:
urlpatterns = patterns('',
(r'^flat/(?P<static>.*)$', 'django.views.generic.simple.redirect_to', {'url': 'http://www.mysite.com/flat/%(static)s'}),
# other stuff
)
一种选择是修改中间件,使其仅重定向 if response.status_code == 404
。将中间件放在 settings.py 中的平面中间件之前。这将重定向
http://example.com/flatpage/ -> http://www.example.com/flatpage/
但是也
http://example.com/invalidurl/ -> http://www.example.com/invalidurl/
在返回 404 错误之前。
另一种选择是在官方的基础上编写自己的平面中间件。您可以在django 网站上查看FlatpageFallbackMiddleware
该类的代码。
在 try, except 块中,检查是否存在平面页面。然后在适当的情况下重定向。如果您不重定向,则返回平面页面。
...
try:
fp = flatpage(request, request.path_info)
# Code to redirect to www goes here
return fp
except Http404:
...