Какое программное обеспечение веб-сервера вы используете?
По крайней мере для Apache и NginX есть модуль, позволяющий использовать HTTP-заголовок X-SendFile
.На сайте NginX написано, что Lighty может сделать это тоже.
В вашем представлении оболочки:
...
abspath = '/most_secret_directory_on_the_whole_filesystem/protected_filename.css'
response = HttpResponse()
response['X-Sendfile'] = abspath
response['Content-Type'] = 'mimetype/submimetype'
# or let your webserver auto-inject such a header field
# after auto-recognition of mimetype based on filename extension
response['Content-Length'] = <filesize>
# can probably be left out if you don't want to hassle with getting it off disk.
# oh, and:
# if the file is stored via a models.FileField, you just need myfilefield.size
response['Content-Disposition'] = 'attachment; filename=%s.css' \
% 'whatever_public_filename_you_need_it_to_be'
return response
Затем вы можете подключить представление через http://mysite.com/url_path/to/serve_hidden_css_file/
.
используйте его в любое время, когда вам нужно сделать что-то для запрашиваемого файла, который не должен быть непосредственно доступен пользователям, например, ограничение доступа к нему или подсчет запросов к нему для статистики или чего-либо другого.
Для Apache: http://tn123.ath.cx/mod_xsendfile/
Для NginX: http://wiki.nginx.org/NginxXSendfile