2016-11-29 14 views
0

該網站生成的所有URL看起來都像http://example.com/'somepath'。我想要做的是將用戶從http://example.com/'somepath'重定向到http://www.example.com/'somepath'。正如我發現它可能與Django的主機。
因爲它在指令settings.py我有以下據說:Django-hosts將非www的重定向轉換爲www

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" 

在hostsconf /網址:

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

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

在hostsconf /瀏覽次數:

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錯誤的請求」和http://www.example.com/'somepath'指向正確的d estination。我究竟做錯了什麼?

回答

1
+0

已經嘗試過了,同樣的事情 – Steve

+1

和你在這得到什麼? 400你可以得到,如果沒有設置ALLOWED_HOSTS,你確定你做到了?顯示追溯 P.S.刪除Django的主機,他不想重定向到www – dd42

+0

我設置allowed_hosts和PREPEND_WWW返回相同的錯誤「400錯誤的請求」 – Steve