2012-12-29 10 views
8

मुझे स्थिर Django फ़ाइलों को सेवा देने के लिए अपाचे सेट अप करने में समस्या हो रही है। मैं एक साझा मेजबान पर हूं और अपाचे कॉन्फ़िगरेशन फ़ाइलों तक पहुंच नहीं है। सभी उदाहरण Apache कॉन्फ़िगरेशन फ़ाइलों में Alias का उपयोग करते हैं, इसलिए मैं यह पता लगाने की कोशिश कर रहा हूं कि .htaccess में mod_rewrite के साथ इसे कैसे किया जाए।स्थैतिक django फ़ाइलों को सेवा देने के लिए htaccess कॉन्फ़िगर करें

मेरे setup.py इस तरह दिखता है:

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

मैं टर्मिनल में python manage.py collectstatic भाग गया और वह अपने काम किया है, इसलिए अब यह है कि मैं /public_html/mydjangoproject/static जो वर्तमान में सबफ़ोल्डर admin और उसके है के तहत एक फ़ोल्डर है सामग्री।

अब मैं, अपाचे कॉन्फ़िगर करने के लिए बस नहीं बल्कि mod_wsgi माध्यम से जा रहा से स्थिर फ़ाइलों की सेवा के लिए कोशिश कर रहा हूँ के रूप में यह प्रलेखन here में कहते हैं:

हम दृढ़ता से संभाल करने django.contrib.staticfiles उपयोग करने की अनुशंसा व्यवस्थापक फ़ाइलें (वेब ​​सर्वर पिछले अनुभाग में बताया गया के साथ, यह collectstatic प्रबंधन आदेश का उपयोग STATIC_ROOT, में स्टैटिक फ़ाइलें इकट्ठा करने और फिर अपने वेब सर्वर को कॉन्फ़िगर STATIC_URL पर STATIC_ROOT सेवा करने के लिए करने का मतलब है)

ऐसा करने के लिए, मैंने नीचे दिखाए गए .htaccess फ़ाइल में पंक्ति 3 जोड़ा। इस फ़ाइल में /home2/usr/public_html/mydjangoproject/.htaccess

मेरे .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] 

ध्यान दें कि मैं के साथ और स्लैश के बिना लाइन 3 की कोशिश की, कोई प्रभाव नहीं है।

जब मैं www.mysite.com/mydjangoproject/static/ पर जाता हूं तो मुझे 500 आंतरिक सर्वर त्रुटि प्राप्त होती है। इसी प्रकार, व्यवस्थापक पृष्ठ को अभी भी आवश्यक सीएसएस फ़ाइलों को नहीं मिल रहा है। क्या चल रहा है?

उत्तर

11

ठीक है, पूरे दिन। Htaccess regexes (yukk!) के साथ गड़बड़ करने के बाद, मुझे अंत में समस्या का पता चला।

इसका वास्तव में .htaccess फ़ाइल से कोई लेना देना नहीं है। समस्या मेरे सेटिंग्स.pySTATIC_URL में थी। मैं उपयोग कर रहा था STATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static' के साथ जाल करने के लिए मुझे STATIC_URL = '/mydjangoproject/static/' सेट करना पड़ा।

तो सबक यहाँ आप बल्कि डिफ़ॉल्ट /static/ का उपयोग करने से उसके अनुसार STATIC_URLमें settings.py स्थापित करने के लिए, है कि अगर आप (मेरे मामले में /home2/usr/public_html/) कहीं भी अपाचे DocumentRoot में अन्य की तुलना में अपने स्टैटिक फ़ाइलें डाल है।

आशा है कि इससे कुछ गरीब आत्मा को जो कुछ भी किया गया है, उसे सहन करने में मदद मिलेगी!

+0

वह अंतिम पंक्ति उत्तर था! मुझे 403 प्रतिबंधों के साथ मारा गया है और अनुमतियों और अपाचे कॉन्फ़िगर को ठीक करने की कोशिश कर रहे एक खरगोश छेद में चला गया है। बस डिफ़ॉल्ट रूप से STATIC_URL को बदलना सुनिश्चित करें। – Nate

संबंधित मुद्दे