【问题标题】:django flatpage redirectsdjango 平面页面重定向
【发布时间】:2010-12-10 06:34:12
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python django django-flatpages


    【解决方案1】:

    一种选择是修改中间件,使其仅在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 website 上查看FlatpageFallbackMiddleware 类的代码。

    在 try, except 块中,检查是否存在平面页面。然后在适当的情况下重定向。如果您不重定向,则返回平面页面。

    ...
    try:
        fp = flatpage(request, request.path_info)
    
        # Code to redirect to www goes here
    
        return fp
    except Http404:
    ...
    

    【讨论】:

      【解决方案2】:

      在您的 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 -> ...
      猜你喜欢
      • 2011-05-26
      • 2010-10-06
      • 1970-01-01
      • 2021-12-25
      • 2023-03-15
      • 2015-08-12
      • 1970-01-01
      相关资源
      最近更新 更多