2009-04-12 66 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我只注意到你說,你被顯示出來,所以忽略了前兩句。無論哪種方式,解決方案可能是相同的。:-)

相關問題