2011-09-05 33 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 /'。