2012-12-29 6 views
8

Mam problem z konfigurowaniem Apache'a do obsługi statycznych plików Django. Jestem na współdzielonym hoście i nie mam dostępu do plików konfiguracyjnych Apache. Wszystkie przykłady używają Alias w plikach konfiguracyjnych Apache, więc próbuję dowiedzieć się, jak to zrobić za pomocą mod_rewrite w. Htaccess.Konfigurowanie htaccess do wyświetlania statycznych plików django

Moje setup.py wygląda następująco:

STATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static' 
STATIC_URL = '/static/' 

Pobiegłem python manage.py collectstatic w terminalu i to nie jego rzecz, tak że teraz mam folder pod /public_html/mydjangoproject/static który obecnie ma podfolder admin i jego zadowolony.

Teraz Próbuję skonfigurować apache tylko służyć pliki statyczne zamiast przechodzenia przez mod_wsgi, jak jest napisane w dokumentacji here:

Zalecamy korzystanie django.contrib.staticfiles obsłużyć Administrator plików (wraz z serwerem WWW jak przedstawiono w poprzednim rozdziale , oznacza to, używając polecenia zarządzania collectstatic do zbierać statycznych plików w STATIC_ROOT, a następnie konfigurowania serwera WWW służyć STATIC_ROOT na STATIC_URL)

Aby to zrobić, dodałem wiersz 3 w pliku .htaccess, jak pokazano poniżej. Ten plik udostępniony jest na /home2/usr/public_html/mydjangoproject/.htaccess

moim pliku .htaccess:

AddHandler fcgid-script .fcgi 
RewriteEngine On 
RewriteRule /static/ /home2/usr/public_html/mydjangoproject/static 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L] 

Zauważ, że próbowałem linii 3 zi bez ukośnika, bez skutku.

Po przejściu na stronę www.mysite.com/mydjangoproject/static/ pojawia się błąd serwera wewnętrznego 500. Podobnie strona admin nadal nie otrzymuje potrzebnych plików css. Co się dzieje?

Odpowiedz

11

Cóż, po całym dniu błądzenia z .htaccess regexes (yukk!), W końcu odkryłem problem.

To naprawdę nie ma nic wspólnego z plikiem .htaccess. Problem był w moim settings.pySTATIC_URL. Okazuje się, że musiałem ustawić STATIC_URL = '/mydjangoproject/static/', aby połączyć się z STATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static', którego używałem.

Więc stąd wniosek, że jeśli umieścić swoje statycznych plików w miejscu innym niż w Apache DocumentRoot (/home2/usr/public_html/ w moim przypadku) trzeba ustawić STATIC_URL w settings.py odpowiednio, zamiast domyślnego /static/.

Mam nadzieję, że to pomoże biednej duszy przetrwać to, co zrobiłem!

+0

Ta ostatnia linia była odpowiedzią! Zostałem trafiony 403 zakazami i wszedłem w króliczą dziurę próbując naprawić uprawnienia i konfiguracje apache. Okazuje się, że należy zmienić domyślnie STATIC_URL. – Nate