繁体   English   中英

配置htaccess以提供静态django文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM