diff options
Diffstat (limited to 'ennu.el')
-rw-r--r-- | ennu.el | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -486,10 +486,15 @@ as keys. Keys are compared using `equal'." (setq httpd-root (expand-file-name (ennu-setting :output-directory) (ennu-setting :working-directory))) (defun httpd/ (proc uri-path query request) - (let ((uri-path (httpd-unhex uri-path))) - (pcase (httpd-status (httpd-gen-path uri-path)) - (200 (httpd-serve-root proc httpd-root uri-path request)) - (_ (httpd-serve-root proc httpd-root (concat uri-path ".html") request))))) + (let ((uri-path (httpd-unhex uri-path)) + (file-path (httpd-gen-path uri-path))) + (cond + ((and (not (string= (file-name-nondirectory file-path) "index.html")) + (string= (file-name-extension file-path) "html")) + (httpd-error proc 404)) + ((= (httpd-status file-path) 200) + (httpd-serve-root proc httpd-root uri-path request)) + (t (httpd-serve-root proc httpd-root (concat uri-path ".html") request))))) (httpd-start)) (defun ennu-server-stop () |