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?
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!
Tags und Links python django apache .htaccess mod-rewrite