[英]Configure htaccess to serve static django files
我在设置Apache以提供静态Django文件时遇到了麻烦。 我在共享主机上,无法访问Apache配置文件。 所有示例都在Apache配置文件中使用Alias
,所以我试图弄清楚如何在.htaccess中使用mod_rewrite。
我的setup.py看起来像这样:
STATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static'
STATIC_URL = '/static/'
我在终端中运行了python manage.py collectstatic
并且它做了它的事情,所以现在我在/public_html/mydjangoproject/static
下有一个文件夹,它当前有子文件夹admin
及其内容。
现在我正在尝试将apache配置为仅提供静态文件而不是通过mod_wsgi,正如它在此处的文档中所述:
我们强烈建议使用django.contrib.staticfiles来处理管理文件(以及上一节中概述的Web服务器;这意味着使用collectstatic管理命令收集STATIC_ROOT中的静态文件, 然后配置Web服务器以进行服务STATIC_URL的STATIC_ROOT )
为此,我在.htaccess文件中添加了第3行,如下所示。 该文件位于/home2/usr/public_html/mydjangoproject/.htaccess
我的.htaccess文件:
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteRule /static/ /home2/usr/public_html/mydjangoproject/static
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]
请注意,我尝试使用和不使用尾部斜杠的第3行,无效。
当我访问www.mysite.com/mydjangoproject/static/时,我收到500内部服务器错误。 同样,管理页面仍然没有获得它需要的css文件。 这是怎么回事?
好吧,经过一整天的混乱.htaccess regexes(yukk!),我终于找到了问题所在。
它实际上与.htaccess文件无关。 问题出在我的settings.py STATIC_URL
。 事实证明我必须设置STATIC_URL = '/mydjangoproject/static/'
以便与我正在使用的STATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static'
进行网格化。
所以这里的教训是,如果你将静态文件放在Apache DocumentRoot以外的任何地方(在我的情况下是/home2/usr/public_html/
),你必须相应地在STATIC_URL
中设置 STATIC_URL
,而不是使用默认/static/
。
希望这能帮助一些可怜的灵魂忍受我的所作所为!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.