J'ai un site Django mis en place qui utilise le panneau d'administration Django, préfixé par /media/
, ainsi que le contenu du site statique dans un répertoire appelé /static/
. Bien sûr, le contenu des médias d'administration réside dans le package Django et le contenu statique du site est stocké avec le code Python du site.Avec Django, quelle est la bonne façon de configurer les chemins vers le contenu d'administration et le contenu statique?
Actuellement, mes public_html
ne contient que des liens symboliques portant un nom approprié aux répertoires qui en fait détiennent le contenu statique, comme suit:
~/public_html/
.htaccess
media -> $HOME/usr/lib/python2.4/site-packages/django/contrib/admin/media/
site.fcgi
site -> $HOME/mysite/public/static/
Et ce sont les règles de réécriture que je utilise dans mon dossier .htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ site.fcgi/$1 [QSA,L]
Cependant, l'utilisation des liens symboliques de cette manière se sent comme un ... hack, et il semble que je pourrais utiliser des règles de réécriture du .htaccess
pour éviter d'utiliser des liens symboliques. (Je veux aussi éventuellement ajouter un fichier robots.txt
et un fichier favicon, sans avoir à ajouter - et maintenir - un tas de liens symboliques.) Est-ce une bonne idée, et si oui, comment faire?
Pour référence future, j'ai finalement fait quelque chose de similaire à la façon dont les projets Rails sont généralement mis en place. Mon projet Django contient un répertoire public
, qui comprend le contenu du site statique, le script FastCGI et le fichier .htaccess
, entre autres, de sorte qu'il ressemble un peu comme ceci:
~/
django/
public/
.htaccess
content/
favicon.ico
[email protected] -> /symlink/to/django/admin/media/
site.fcgi
static/
Et puis, ~/public_html
est tout simplement un lien symbolique sur ~/django/public
. Tout fonctionne bien, alors je suis content.
Etes-vous limité à l'installation sous un compte d'utilisateur et en utilisant .htaccess au lieu de modifier la configuration d'Apache? Si oui, veuillez l'indiquer dans la question. – akaihola