У меня настроен сайт Django, который использует админ-панель Django с префиксом /media/
, а также статический контент сайта в каталоге с именем /static/
. Медиа-контент администратора, конечно же, находится в пакете Django, и статический контент сайта хранится вместе с кодом Python для сайта.
В настоящее время мой public_html
просто содержит символические ссылки с соответствующими именами на каталоги, которые фактически содержат статический контент, следующим образом:
~/public_html/
.htaccess
media -> $HOME/usr/lib/python2.4/site-packages/django/contrib/admin/media/
site.fcgi
site -> $HOME/mysite/public/static/
И вот правила перезаписи, которые я использую в моем .htaccess
файле:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ site.fcgi/$1 [QSA,L]
Однако использование символических ссылок таким образом выглядит как ... хак, и кажется, что я мог бы использовать правила перезаписи в .htaccess
, чтобы избежать использования символических ссылок. (Я также хочу со временем добавить файл robots.txt
и файл favicon, не добавляя и не поддерживая кучу символических ссылок.) Это хорошая идея, и если да, то как мне это сделать?
Для дальнейшего использования я в конечном итоге сделал нечто похожее на то, как обычно создаются проекты Rails. Мой проект Django содержит каталог public
, который включает, помимо прочего, статический контент сайта, скрипт FastCGI и файл .htaccess
, поэтому он выглядит примерно так:
~/
django/
public/
.htaccess
content/
favicon.ico
media@ -> /symlink/to/django/admin/media/
site.fcgi
static/
А затем, ~/public_html
просто символически связывается с ~/django/public
. Все отлично работает, поэтому я счастлив.