このサイトでは、すべて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。私は間違って何をしていますか?
デフォルト設定を試してみてはすでに、同じこと – Steve
を、それを試してみましたが、あなたがこの中に取得することがありますか? 400あなたはALLOWED_HOSTSを設定していない場合、あなたがそれをしたことを確信できますか?ショートレースバック P.S. django-hostsを削除すると、彼はwwwにリダイレクトしたくなかった – dd42
私はallowed_hostsを設定し、PREPEND_WWWは同じエラー「400 Bad Request」を返す – Steve