aln*_*fie 8 python apache django .htaccess mod-rewrite
我在设置Apache以提供静态Django文件时遇到了麻烦.我在共享主机上,无法访问Apache配置文件.所有的例子都Alias在Apache配置文件中使用,所以我试图弄清楚如何在.htaccess中使用mod_rewrite.
我的setup.py看起来像这样:
STATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static'
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)
我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]
Run Code Online (Sandbox Code Playgroud)
请注意,我尝试使用和不使用尾部斜杠的第3行,无效.
当我访问www.mysite.com/mydjangoproject/static/时,我收到500内部服务器错误.同样,管理页面仍然没有获得它需要的css文件.这是怎么回事?
aln*_*fie 11
好吧,经过一整天的混乱.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_URLin settings.py,而不是使用默认值/static/.
希望这能帮助一些可怜的灵魂忍受我的所作所为!
| 归档时间: |
|
| 查看次数: |
9136 次 |
| 最近记录: |