2011-09-05 57 views
0

我正在使用Django開發一個站點。直到現在,當我在開發環境中使用它時,它工作正常,正常加載所有樣式表和腳本。但是,我目前已經轉向使用Apache Web Server和mod_wsgi來爲Django頁面提供服務的生產環境。現在,當我查看該網站時,它報告無法加載css和js文件,並返回錯誤代碼403 - 訪問被拒絕。我的網站是目錄"C:\Users\rohitm\Web Applications\WebApp"。我已經在"C:\Program Files\Apache Software Foundation\Apache2.2"上安裝了Apache 2.2。我已編輯的conf子目錄下的httpd.conf文件在Apache安裝文件夾,如下所示:Apache無法在Django的靜態目錄中加載樣式表和腳本

Alias /static/ "C:/Users/rohitm/Web Applications/WebApp/static" 
<Directory "C:/Users/rohitm/Web Applications/WebApp/static"> 
Order allow,deny 
Allow from all 
</Directory> 

Alias /static/images/ "C:/Users/rohitm/Web Applications/WebApp/static/images" 
<Directory "C:/Users/rohitm/Web Applications/WebApp/static/images"> 
Order allow,deny 
Allow from all 
</Directory> 

Alias /static/javascript/ "C:/Users/rohitm/Web Applications/WebApp/static/javascript" 
<Directory "C:/Users/rohitm/Web Applications/WebApp/static/javascript"> 
Order allow,deny 
Allow from all 
</Directory> 

Alias /static/stylesheets/ "C:/Users/rohitm/Web Applications/WebApp/static/stylesheets" 
<Directory "C:/Users/rohitm/Web Applications/WebApp/static/stylesheets"> 
Order allow,deny 
Allow from all 
</Directory> 

Alias /static/admin/ "C:/Users/rohitm/Web Applications/WebApp/static/admin" 
<Directory "C:/Users/rohitm/Web Applications/WebApp/static/admin"> 
Order allow,deny 
Allow from all 
</Directory> 

WSGIScriptAlias/"C:/Users/rohitm/Web Applications/WebApp/apache/django.wsgi" 
<Directory "C:/Users/rohitm/Web Applications/WebApp/apache"> 
Order allow,deny 
Allow from all 
</Directory> 

我已經在我的Web應用程序文件夾中創建的文件夾中的Apache文件django.wsgi。內容如下:是

import os 
import sys 
sys.path.append('C:/Users/rohitm/Web Applications/') 
sys.path.append('C:/Users/rohitm/Web Applications/WebApp/') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'WebApp.settings' 

import django.core.handlers.wsgi 

application = django.core.handlers.wsgi.WSGIHandler() 

settings.py中的靜態文件設置如下

STATIC_ROOT = 'C:/Users/rohitm/Web Applications/WebApp/static/' 

STATIC_URL = '/static/' 

ADMIN_MEDIA_PREFIX = '/static/admin/' 

運行manage.py collectstaic命令後,靜態文件夾中有4個個子文件夾 - adminimagesstylesheetsjavascript。樣式表文件夾包含文件main.css,而javascipt文件夾包含文件jquery.min.js。 admin文件夾中包含所有與管理相關的css和js。現在,當我通過http://localhost查看網站時,css和javascript文件未加載,而瀏覽器控制檯(Chrome-Crtl + Shift + J)報告由於服務器響應錯誤403(禁止)而導致文件無法加載, 。

請幫忙急。

回答

0

我猜測Apache正在運行的用戶無權訪問C:/Users/rohitm/Web Applications/WebApp/static文件夾。

一般來說,最好將這些文件放在中央位置,而不是放在個人主目錄中。

3

刪除給予Alias指令的第一條路徑上的尾部斜線,或者向第二條路徑添加尾部斜線。尾部斜線的使用應該是平衡的,也就是說,不是兩者兼而有之,或者兩者兼而有之。

您還只需要用於靜態文件所在頂部目錄的別名/目錄塊。您不需要枚舉所有子目錄。因此使用:

Alias /static "C:/Users/rohitm/Web Applications/WebApp/static" 
<Directory "C:/Users/rohitm/Web Applications/WebApp/static"> 
Order allow,deny 
Allow from all 
</Directory> 

現在請注意使用'/ static'而不是'/ static /'。