2011-09-11 32 views
0

我有一個網站我Django的做,我試圖將它部署到我已經躺在附近(使用mod_wsgi的所推薦的官方文檔)的Apache服務器和大部分,一切都很好。我有一個問題讓Apache正確提供與我的項目相關的靜態文件。通過比較我的服務器的文件結構所呈現的HTML源來看,我要說的是,我的應用程序請求從正確的位置正確的文件,但由於某種原因Apache的拋出了我404.這是我的Apache配置:阿帕奇僅提供Django的靜態文件目錄的第一級

<VirtualHost *:80> 
    ServerName book 
    ServerAlias www.book.dev book.dev 

    DocumentRoot /var/www/book 


    Alias /static/  /var/www/book/static 
    Alias /media/   /var/www/book/media 

    <Directory /var/www/book/static> 
      Order deny,allow 
      Allow from all 
    </Directory> 

    WSGIScriptAlias//home/rich/sites/book/apache/django.wsgi 

    <Directory /home/rich/sites/book> 
      Order allow,deny 
      Allow from all 
    </Directory> 

</VirtualHost> 

如果我在我的Web瀏覽器(在這種情況下爲www.book.dev/static)中導航到STATIC_ROOT,我在服務器上看到目錄結構中第一級的(正確)列表。然而,試圖遵循子目錄的鏈接,甚至根目錄中的文件,只產生404。我在2.X範圍內使用Django 1.3,Python 2.6和某些版本的apache(無論是最近在Debian的包回購版)

任何幫助表示讚賞。

編輯:(情節複雜!)

所以,擺弄多一些之後,我發現的東西,我覺得很有趣。我發現,如果我運行開發服務器,該URL是從靜態內容是牽強的相同到靜態文件的URL,當Apache是​​服務於文件生成。這就是說,它們都採用settings.py中配置的形式/static/<file>,但有時它不起作用。

回答

0

請仔細檢查您的settings.py。尋找逗號和目錄結構的邏輯。特別是關於STATIC_ROOT和MEDIA ... dirs。 問題往往不是它們來自哪裏。

而且你可以創建一個symink到Apache目錄......並把它給它的dev文件結構爲您的項目...嘗試它可能會顯示在模板你的錯誤,如果存在的話......