すべてのフラットページにサブドメインがあることを確認し、www
ない場合はサブドメインにリダイレクトしたいと思います。
にリダイレクトするミドルウェアをいくつか見てきましたwww
が、(1)通常はすべてのURLをにリダイレクトしwww
、(2)私が見つけたミドルウェアはフラットページでは機能しません。
すべてのサイトのURLをリダイレクトしてwwwサブドメインを含めるのではなく、フラットページだけを含めます。
誰かが私がこれを行う方法を知っていますか?
すべてのフラットページにサブドメインがあることを確認し、www
ない場合はサブドメインにリダイレクトしたいと思います。
にリダイレクトするミドルウェアをいくつか見てきましたwww
が、(1)通常はすべてのURLをにリダイレクトしwww
、(2)私が見つけたミドルウェアはフラットページでは機能しません。
すべてのサイトのURLをリダイレクトしてwwwサブドメインを含めるのではなく、フラットページだけを含めます。
誰かが私がこれを行う方法を知っていますか?
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:
...
urls.py ファイルで次のようにします。
urlpatterns = patterns('',
(r'^flat/(?P<static>.*)$', 'django.views.generic.simple.redirect_to', {'url': 'http://www.mysite.com/flat/%(static)s'}),
# other stuff
)