1

すべてのフラットページにサブドメインがあることを確認し、wwwない場合はサブドメインにリダイレクトしたいと思います。

にリダイレクトするミドルウェアをいくつか見てきましたwwwが、(1)通常はすべてのURLをにリダイレクトしwww、(2)私が見つけたミドルウェアはフラットページでは機能しません。

すべてのサイトのURLをリダイレクトしてwwwサブドメインを含めるのではなく、フラットページだけを含めます。

誰かが私がこれを行う方法を知っていますか?

4

2 に答える 2

0

1 つのオプションは、ミドルウェアを変更して、response.status_code == 404. settings.py の flatpage ミドルウェアの直前にミドルウェアを配置します。これはリダイレクトします

http://example.com/flatpage/ -> http://www.example.com/flatpage/

だけでなく、

http://example.com/invalidurl/ -> http://www.example.com/invalidurl/

404 エラーを返す前に。


別のオプションは、公式のものに基づいて独自のフラットページ ミドルウェアを作成することです。FlatpageFallbackMiddlewareクラスのコードは、 django の Web サイトで確認できます。

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 に答える
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 に答える