1

我想确保我所有的平面页面都有www子域,如果没有,则重定向到它。

我查看了一些重定向到的中间件www,但是 (1),它们通常将所有 url 重定向到www和 (2),我发现这些中间件不适用于平面页面。

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

有人知道我应该怎么做吗?

4

2 回答 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
)
于 2009-10-27T12:16:18.660 回答
0

一种选择是修改中间件,使其仅重定向 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:
...
于 2009-10-26T22:25:34.893 回答