summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ennu.el13
1 files changed, 9 insertions, 4 deletions
diff --git a/ennu.el b/ennu.el
index 69e8a93..5cd1d1a 100644
--- a/ennu.el
+++ b/ennu.el
@@ -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 ()