2009-04-12 38 views
1

我收到以下消息时,我浏览到site.com无法使从site.com在Django域名重定向到www.site.com

500 - Internal Server Error 

我让我的404错误信息,当我浏览到表明我的网站还活着的www.site.com。

你怎么能做出一个域名重定向没有通过的.htaccess从Django的到site.com www.site.com?

我的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), 
    ) 

[编辑]

我从Djangohosting如下回答:

Remove the website proxy for [site.com] and add [site.com] in the aliases section of the [www.site.com] website. 

我不完全知道这意味着什么。

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

为什么不能使用.htaccess(或者您可能使用的Web服务器提供的任何其他机制)? – mipadi 2009-04-12 17:20:55

+0

@mipadi:我可以但我不想。我想学习配置我的网站没有.htaccess。有人告诉我,配置完整的.htaccess是Apache安全性不佳的一个标志。 – 2009-04-12 17:25:15

+0

一般来说,Django不处理服务器配置 - 至少不是在这种情况下。 Django应用程序由服务器提供。所以如果你想自动从site.com重定向到www.site.com,某种类型的Apache配置文件是实现它的最好方式。 – mipadi 2009-04-12 17:27:45

回答

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.mysite.com') 

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

基于this one,没有测试它。

2

500内部服务器错误可能是造成这一行:

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

include()功能是一种方法,包括其他的URL配置文件,而不是静态的HTML文件。您必须在给定的URL(/ home)上将index.html作为static file提供,或者编写一个只显示文件的视图。

+0

我评论了这条线。发生同样的错误。 @mipadi:感谢您指出这一点! – 2009-04-12 17:30:04

3

检出PREPEND_WWW设置可能会有所帮助。

+0

问题是,您将无法找到prepend_www设置工作的网站。 :-) – 2009-04-12 17:45:53

1

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

500 - 内部服务器错误

我让我的404错误信息,当我浏览到www.site.com这表明我的网站活着。

很可能反过来。 500消息表示您的网站处于活动状态,但发生错误。你要明白什么是该URL的site.com/www.site.com部分服务找到连接到哪个服务器。当你的django应用程序被调用时,这部分已经完成了,所以django没有办法做到这一点。

相反,你要设置WWW作为site.com的子域名,使它们指向同一个地方。看到这里的第一个例子:virtualhosts examples

UPDATE我只注意到你说,你被显示出来,所以忽略了前两句。无论哪种方式,解决方案可能是相同的。:-)

相关问题