2017-08-10 1 views
1

J'essaie de servir des fichiers statiques avec Hunchentoot, depuis le répertoire www de mon projet. Mon accepteur est défini comme:accepteur facile ignorant: option document-root; Je ne suis pas en train de servir des fichiers statiques

(defvar *acceptor* (make-instance 'easy-acceptor 
     :port 4242 
     :document-root (truename "./www/"))) 

Je puis commence avec:

(start *acceptor*) 

Les travaux accepteurs, je peux en ce qu'on utilise define-easy-handler pour créer une page racine:

(define-easy-handler (index :uri "/")() 
    (with-html-output-to-string (_) 
     (:html 
     (:head 
     (:title "Hello world") 
     (:body 
     (:h1 "Hello world!)))))) 

. .. et quand je navigue à http://localhost:4242/ je vois cette page.

Mais aucun fichier statique n'est servi à partir de mon répertoire www. Par exemple. si je crée www/jquery-3.2.1.min.js et accédez à http://localhost:4242/jquery-3.2.1.min.js je reçois un 404.

127.0.0.1 - [2017-08-11 08:08:02] "GET /jquery-3.2.1.min.js HTTP/1.1" 404 355 "-" "Mozilla/5.0 (X11; FreeBSD amd64; rv:54.0) Gecko/20100101 Firefox/54.0" 

HELLOWORLD> (directory (make-pathname :directory '(:relative "www") :name :wild :type "js")) 
(#P"/usr/home/duncan/code/helloworld/www/jquery-3.2.1.min.js") 
+1

Je n'arrive pas à reproduire le problème (sauf si je supprime les autorisations du répertoire www). – jkiiski

+1

@jkiiski Hah! 'chmod -R 775 www' l'a réparé. Merci :) (heureux d'upvote + accepter votre suggestion si vous en faites une réponse). –

Répondre

3

Vous devez vous assurer que le répertoire et les fichiers qu'il contient ont des autorisations appropriées définies. Le répertoire doit avoir l'autorisation x pour autoriser le programme serveur à accéder au contenu du répertoire, et les fichiers doivent avoir au moins la permission r.