为什么我的Apache看不到媒体文件夹?
Alias /media/ /home/matt/repos/hello/media
<Directory /home/matt/repos/hello/media>
Options -Indexes
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /home/matt/repos/hello/wsgi/django.wsgi
/media 是我的一个文件夹。当我访问 mydomain.com/media/ 时,出现了 403 Forbidden 的错误。而且,我网站的其他部分也不能正常工作,因为所有静态文件都显示 404 找不到。为什么会这样呢?页面可以加载,就是媒体文件夹不行。
补充说明:hello 是我的项目文件夹。我已经尝试把那个文件夹的权限设置为 777。
5 个回答
2
我解决了这个问题。原来我在 media/ 后面漏加了一个斜杠。
3
我觉得 WSGIScriptAlias / /home/matt/repos/hello/wsgi/django.wsgi
这行代码是告诉 Apache 服务器,所有在 / 这个路径下的请求都要由指定的 WSGI 脚本来处理。这其中也包括了 /media 这个路径。所以你需要告诉 Apache 不要把 /media 也包含在这个规则里。
你可以试着在你的配置文件中添加以下内容:
<LocationMatch "^/media/">
SetHandler None
</LocationMatch>
或者你可以写一个正则表达式,匹配除了 /media 下面的文件以外的所有内容,然后用这个替换掉你的 WSGIScriptAlias 这一行:
WSGIScriptAliasMatch <regex> /home/matt/repos/hello/wsgi/django.wsgi
4
你现在关闭了索引功能,所以当你请求/media这个目录时,Apache不会列出里面的文件,而是会显示403禁止访问的错误。你可以试着直接访问里面的某个文件,比如:http://localhost/media/some_image.jpg