J'utilise plusieurs projets django fonctionnant sur la même instance d'apache via mod_wsgi, configurée avec un virtualhost pour chaque site, voir le httpd.conf aquí . Pour l'un des sites, je veux utiliser le cache statique ( Générateur statique ), j'ai donc créé un répertoire avec un fichier .htaccess qui contient :
RequestHeader unset X-Forwarded-Host
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteRule ^(.*) http://127.0.0.1:3456/$1 [P]
où 3456 est le port de django sur le serveur. En utilisant cette règle de réécriture, la requête est toujours transmise au gestionnaire mod_wsgi, même si le fichier ou le répertoire existe, et si le fichier index.html
existe la demande montre comme request-path/index.html
. J'ai essayé une autre configuration :
RequestHeader unset X-Forwarded-Host
RewriteEngine on
RewriteBase /
RewriteCond $1 !-d
RewriteCond $1index.html !-f
RewriteRule ^(.*) http://127.0.0.1:3456/$1 [P]
mais j'ai obtenu presque les mêmes résultats. Toutes les demandes sont transférées au gestionnaire mod_wsgi, mais le chemin de la demande est maintenant celui d'origine. Pour résumer :
- Quel est le RewriteCond correct à utiliser ici ?
- Comment transférer une requête au gestionnaire mod_wsgi ? Est-ce la bonne méthode ?
- Si ce n'est pas la façon de faire, alors comment servir les fichiers statiques à partir d'un répertoire quand ils existent, et quand ils n'existent pas, les servir à partir de apache/mode_wsgi ?
Merci pour votre aide.