2009-04-12 10 views
1

ich die folgende Meldung erhalten einen Domain-Umleitung in Django zu machen, wenn ichEs war uns nicht site.com zu www.site.com

500 - Internal Server Error 

ich meine 404-Fehlermeldung site.com durchsuchen, wenn ich zu durchsuchen www.site.com, die anzeigt, dass meine Seite lebt.

Wie können Sie eine Domainumleitung ohne .htaccess von Django von site.com auf www.site.com vornehmen?

Mein 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), 
    ) 

[Bearbeiten]

Ich habe folgende Antwort von Djangohosting:

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

Ich bin nicht ganz sicher, was es bedeutet, .

  1. Wie können Sie den Website-Proxy für site.com entfernen?
  2. Wo finden Sie den Bereich Aliase auf der Website www.site.com?
+0

Warum können Sie .htaccess (oder welchen anderen Mechanismus auch immer von dem Webserver, den Sie möglicherweise verwenden) nicht verwenden? – mipadi

+0

@mipadi: Ich kann, aber ich will nicht. Ich möchte lernen, meine Site ohne .htaccess zu konfigurieren. Einer erzählte mir, dass .htaccess, das voller Konfigurationen ist, ein Zeichen für schlechte Sicherheit in Apache ist. –

+0

Im Allgemeinen kümmert sich Django nicht um Serverkonfigurationen - zumindest nicht in dieser Situation. Eine Django-App wird von einem Server aus bedient. Wenn Sie also automatisch von site.com auf www.site.com umleiten möchten, ist eine Apache-Konfigurationsdatei der beste Weg dafür. – mipadi

Antwort

6

Ich weiß nicht, ob es alle Ihre Probleme löst, aber wenn Sie es über django tun wollen, versuchen, eine Middleware

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') 

Denken Sie daran, dass es vor allen anderen Middleware ausgeführt werden müssen.

Basiert auf this one, hat es nicht getestet.

2

Die 500 Internal Server Fehler wird von dieser Linie wahrscheinlich verursacht:

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

Die include() Funktion ist eine Möglichkeit, andere URL-Konfigurationsdateien, nicht statische HTML-Dateien enthalten. Sie müssten entweder index.html als static file unter der angegebenen URL (/ home) bereitstellen oder eine Ansicht schreiben, die die Datei einfach rendert.

+0

Ich habe die Linie kommentiert. Derselbe Fehler tritt auf. @mipadi: Danke, dass du darauf hingewiesen hast! –

3

Auschecken PREPEND_WWW Einstellung könnte helfen.

+0

Das Problem ist, dass Sie die Website für die Einstellung prepend_www nicht finden können. :-) –

1

bekomme ich folgende Meldung, wenn ich

500 bis site.com durchsuchen - Internal Server Error

ich meine 404-Fehlermeldung, wenn ich zu www.site.com sehen, die meine Seite zeigt ist am Leben.

Es ist wahrscheinlich umgekehrt. Die 500-Nachricht bedeutet, dass Ihre Website aktiv ist, aber einen Fehler gibt. Was Sie verstehen müssen ist, dass der site.com/www.site.com Teil der URL dient, zu finden, welcher Server zu verbinden. Zu dem Zeitpunkt, an dem deine Django-App aufgerufen wird, ist dieser Teil bereits fertiggestellt, also gibt es keine Möglichkeit, dies von django aus zu tun.

Stattdessen möchten Sie www als eine Subdomain von site.com einrichten und sie auf den gleichen Ort zeigen. Siehe das erste Beispiel hier: virtualhosts examples

UPDATE Ich habe gerade bemerkt, dass Sie festgestellt, dass Ihre 404 wurde zeigt sich, so ignorieren die ersten beiden Sätze. In jedem Fall wäre die Lösung wahrscheinlich die gleiche.:-)

Verwandte Themen