2 votes

Apache / Licorne : comment faire en sorte qu'Apache serve des fichiers statiques

Je suis ce tutoriel pour installer apache + licorne mais il semble qu'apache ne serve aucun des fichiers statiques. Voici la configuration que j'ai trouvée (jetez un coup d'oeil à Redirect all non-static requests to unicorn en particulier) :

<VirtualHost *:80>
  ServerName www.unstilted.com:80
  ServerAlias *.unstilted.com
  DocumentRoot /var/www/unstilted/current/public

  ErrorDocument 503 /system/maintenance.html

  RewriteEngine On

  RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
  RewriteCond %{REQUEST_FILENAME} !/system/maintenance.html
  RewriteRule ^.*$    /system/maintenance.html [L]

  # Rewrite to check for Rails non-html cached pages (i.e. xml, json, atom, etc)
  RewriteCond  %{THE_REQUEST} ^(GET|HEAD)
  RewriteCond  %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}%{REQUEST_URI} -f
  RewriteRule  ^(.*)$ /cache/%{HTTP_HOST}$1 [QSA,L]

  # Rewrite to check for Rails cached html page
  RewriteCond  %{THE_REQUEST} ^(GET|HEAD)
  RewriteCond  %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}%{REQUEST_URI}.html -f
  RewriteRule  ^(.*)$ /cache/%{HTTP_HOST}$1.html [QSA,L]

  # no www
  RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
  RewriteRule ^(.*)$ http://%1$1 [R=301,L]

  <Proxy balancer://unicornservers>
    BalancerMember http://127.0.0.1:5000
  </Proxy>

  # Redirect all non-static requests to unicorn
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://unicornservers%{REQUEST_URI} [P,QSA,L]

  ProxyPass / balancer://unicornservers/
  ProxyPassReverse / balancer://unicornservers/
  ProxyPreserveHost on

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>
</VirtualHost>

Dans mon /var/www/unstilted/current/public j'ai le fichier robots.txt, mais quand je vais dans le répertoire mydomain.com/robots.txt la requête est envoyée à la licorne, et n'est pas traitée par Apache.

Quel est le problème avec ma configuration ? Et comment faire pour qu'Apache serve les fichiers statiques ?

Merci !

0 votes

Je ne suis pas sûr, mais est-ce que ça marche quand on enlève le ProxyPass* -Directives ?

2voto

Shane Madden Points 112034

Perdre le %{DOCUMENT_ROOT} à cette condition. %{REQUEST_FILENAME} est le chemin d'accès complet du système de fichiers (et non de l'URL) vers le fichier, il devrait donc être compatible comme ceci :

RewriteCond %{REQUEST_FILENAME} !-f

0 votes

Merci Shane. J'ai essayé différentes combinaisons mais j'ai dû m'embrouiller et ne pas essayer ça.

0 votes

Cela ne résout pas le problème pour moi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X