无法在Django中从example.com到www.example.com进行域重定向

Léo*_* 준영 1 django dns proxy redirect

我浏览时收到以下消息 example.com

500 - Internal Server Error
Run Code Online (Sandbox Code Playgroud)

当我浏览到www.example.com表明我的网站还活着时,我收到了404错误消息.

如果Django从example.com到www.example.com没有.htaccess,你如何进行域重定向?

我的urls.py

     from django.conf.urls.defaults import *

     from django.contrib import admin
     admin.autodiscover()

     urlpatterns = patterns('',
     # Example:
     # (r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')),

     (r'^home/', include('index.html')),

     # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
     # to INSTALLED_APPS to enable admin documentation:
     (r'^admin/doc/', include('django.contrib.admindocs.urls')),

     (r'^admin/(.*)', admin.site.root),
     )
Run Code Online (Sandbox Code Playgroud)

[编辑]

我从Djangohosting得到以下答案:

删除[example.com]的网站代理,并在[www.example.com]网站的别名部分添加[example.com].

我不完全确定这意味着什么.

  1. 如何删除网站代理example.com
  2. 你在哪里可以找到该网站的别名部分www.example.com

zal*_*lew 6

我不知道它是否解决了你所有的问题,但如果你想通过django来做,试试中间件

from django.http import HttpResponseRedirect

class WWWRedirectMiddleware(object):
    def process_request(self, request):
        if not request.META['HTTP_HOST'].startswith('www.'):
            return HttpResponseRedirect('http://www.example.com')
Run Code Online (Sandbox Code Playgroud)

请记住,它必须在任何其他中间件之前执行.

基于这个,没有测试它.