我正在使用Django开发一个网站。到目前为止,当我在开发环境中使用它时它工作正常,正常加载所有样式表和脚本。但是,我目前已经转移到使用带有mod_wsgi的Apache Web服务器来生成Django页面的生产环境。现在,当我查看该站点时,它报告无法加载css和js文件,并返回错误代码403 - 拒绝访问。我的网站是"C:\Users\rohitm\Web Applications\WebApp"
目录。我在"C:\Program Files\Apache Software Foundation\Apache2.2"
安装了Apache 2.2。我编辑了Apache安装文件夹中conf子目录下的httpd.conf文件,如下所示:
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>
我在我的WebApp文件夹下的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个子文件夹 - admin
,images
,stylesheets
和javascript
。样式表文件夹包含文件main.css
,而javascipt文件夹包含文件jquery.min.js
。 admin文件夹中包含所有与管理员相关的css和js。现在每当我通过http://localhost
查看网站时,都不会加载css和javascript文件,而浏览器控制台(Chrome - Crtl + Shift + J)报告文件无法加载,因为服务器响应错误403(禁止)。
请帮忙。
答案 0 :(得分: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 /'。
答案 1 :(得分:0)
我猜想运行Apache的用户无法访问C:/Users/rohitm/Web Applications/WebApp/static
文件夹。
一般情况下,最好将这些文件放在中央位置,而不是放在个人主目录中。