我有一个django应用程序,我想将SSL应用于管理页面。由于管理页面是唯一需要SSL的页面,我想使用apache配置文件而不使用SSLMiddleware来执行此操作。我的(部分)apache配置文件如下所示:
<VirtualHost *:80>
.
.
DocumentRoot /home/www/sites_django/wmssite
.
<Directory "/home/www/sites_django/wmssite">
.
</Directory>
<Location "/admin">
RewriteEngine On
RewriteRule ^/(.*) https://www.whitemoorstudio.pvm/admin [L,R=301]
</Location>
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile "/usr/local/etc/apache22/www_whitemoorstudio_pvm.crt"
SSLCertificateKeyFile "/usr/local/etc/apache22/www_whitemoorstudio_pvm.key"
.
.
</VirtualHost>
TLD .pvm是我用于在内部网络上进行测试的本地TLD。
我已经设置了一个自我证明的证书,它很有用....奇怪的是,由于某种原因,当重写为https时,它无法在/ media目录中找到媒体文件,没有图像,没有css,没有js。 apache错误日志告诉我它正在查找目录/ usr / local / www / apache22 / data / media:
[Sat Nov 06 20:45:18 2010] [error] [client 192.168.1.134] File does not exist: /usr/local/www/apache22/data/media, referer: https://www.whitemoorstudio.pvm/admin/
当我不重写https管理媒体目录/ usr / local / www / apache22 / media时。此目录媒体是一个逻辑链接:
media -> /usr/local/lib/python2.5/site-packages/django/contrib/admin/media
我不知道为什么没有SSL它正在寻找:
/usr/local/www/apache22/media
并使用SSL:
/usr/local/www/apache22/data/media
这最后一个目录不存在!!!
有人有任何想法吗?
答案 0 :(得分:0)
问题已经解决了。在VirtualHost *:443容器中添加内容时
我忘记指定DocumentRoot指令,因此它是在主httpd.conf中指定的。
在VirtualHost *:80容器中运行良好,因为在该部分我指定了DocumentRoot。
在httpd.conf中,它被指定为: DocumentRoot“/ usr / local / www / apache22 / data”