2016-11-29 11 views
0

このサイトでは、すべてhttp://example.com/「somepath」のような異なるURLが生成されます。私がしたいのは、ユーザーをhttp://example.com/「somepath」からhttp://www.example.com/「somepath」にリダイレクトすることです。私が知っているように、django-hostsを使うことは可能です。
それは私がsettings.pyに次た命令に言われていたよう:hostsconf /ビューでDjango-hosts以外のwwwからwwwへのリダイレクト

from django.conf.urls import url 
from .views import wildcard_redirect 

urlpatterns = [ 
    url(r'^(?P<path>.*)', wildcard_redirect), 
] 

:hostsconf/URLで

ALLOWED_HOSTS = ['www.example.com', 'example.com'] 

INSTALLED_APPS = [ 
    ..., 
    'django_hosts', 
] 

MIDDLEWARE = [ 
    'django_hosts.middleware.HostsRequestMiddleware', 
    ... 
    'django_hosts.middleware.HostsResponseMiddleware', 
] 

ROOT_URLCONF = 'appname.urls' 
ROOT_HOSTCONF = 'appname.hosts' 
DEFAULT_HOST = 'www' 
DEFAULT_REDIRECT_URL = "http://www.example.com" 
PARENT_HOST = "example.com" 

from django.conf import settings 
from django.http import HttpResponseRedirect 

DEFAULT_REDIRECT_URL = getattr(settings, "DEFAULT_REDIRECT_URL", "http://www.example.com") 

def wildcard_redirect(request, path=None): 
    new_url = DEFAULT_REDIRECT_URL 
    if path is not None: 
     new_url = DEFAULT_REDIRECT_URL + "/" + path 
    return HttpResponseRedirect(new_url) 

しかし、のように見えますhttp://example.com/「somepath」に「400 Bad Request」が返され、http://www.example.com/「somepath」が正しいdを指しているために動作しませんestination。私は間違って何をしていますか?

答えて

1
+0

デフォルト設定を試してみてはすでに、同じこと – Steve

+1

を、それを試してみましたが、あなたがこの中に取得することがありますか? 400あなたはALLOWED_HOSTSを設定していない場合、あなたがそれをしたことを確信できますか?ショートレースバック P.S. django-hostsを削除すると、彼はwwwにリダイレクトしたくなかった – dd42

+0

私はallowed_hostsを設定し、PREPEND_WWWは同じエラー「400 Bad Request」を返す – Steve

関連する問題