Konfigurieren Sie htaccess, um statische Django-Dateien bereitzustellen

8

Ich habe Probleme beim Einrichten von Apache für statische Django-Dateien. Ich bin auf einem freigegebenen Host und habe keinen Zugriff auf die Apache-Konfigurationsdateien. Alle Beispiele verwenden Alias in den Apache-Konfigurationsdateien, also versuche ich herauszufinden, wie man es mit mod_rewrite in .htaccess macht.

Mein setup.py sieht folgendermaßen aus:

%Vor%

Ich habe python manage.py collectstatic im Terminal ausgeführt und es hat seine Sache gemacht, so dass ich jetzt einen Ordner unter /public_html/mydjangoproject/static habe, der momentan den Unterordner admin und seinen Inhalt hat.

Jetzt versuche ich Apache so zu konfigurieren, dass ich nur die statischen Dateien diene, anstatt mod_wsgi zu durchlaufen, wie es in der Dokumentation hier :

  

Wir empfehlen dringend, django.contrib.staticfiles zu verwenden, um die   Admin-Dateien (zusammen mit einem Webserver wie oben beschrieben)   Sektion; das bedeutet, den Befehl Collectstatic Management zu verwenden   Sammeln Sie die statischen Dateien in STATIC_ROOT, und konfigurieren Sie dann Ihr Web   Server, der STATIC_ROOT bei STATIC_URL bedient)

Um dies zu tun, fügte ich Zeile 3 in der .htaccess-Datei hinzu, wie unten gezeigt. Diese Datei befindet sich in /home2/usr/public_html/mydjangoproject/.htaccess

Meine .htaccess-Datei:

%Vor%

Beachten Sie, dass ich Zeile 3 mit und ohne den Schrägstrich ausprobiert habe, ohne Wirkung.

Wenn ich zu www.mysite.com/mydjangoproject/static/ gehe, erhalte ich einen internen Serverfehler von 500. Ebenso erhält die Admin-Seite immer noch nicht die CSS-Dateien, die sie benötigt. Was ist los?

    
alnafie 29.12.2012, 16:56
quelle

1 Antwort

11

Nun, nachdem ich einen ganzen Tag mit .htaccess Regexes (yukk!) verbracht habe, habe ich endlich das Problem herausgefunden.

Es hat eigentlich nichts mit der .htaccess-Datei zu tun. Das Problem war in meiner settings.py STATIC_URL . Es stellte sich heraus, dass ich STATIC_URL = '/mydjangoproject/static/' einstellen musste, um mit der von mir verwendeten STATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static' zu verschmelzen.

Die Lektion hier ist also, dass wenn Sie Ihre statischen Dateien irgendwo anders als in Apache DocumentRoot ( /home2/usr/public_html/ in meinem Fall) setzen, müssen Sie die STATIC_URL in settings.py entsprechend setzen , anstatt den Standardcode /static/ zu verwenden.

Hoffe, das hilft einer armen Seele zu ertragen, was ich getan habe!

    
alnafie 30.12.2012, 07:56
quelle