aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Ángel Moreno <mail@migalmoreno.com>2022-12-16 22:46:55 +0100
committerMiguel Ángel Moreno <mail@migalmoreno.com>2022-12-16 22:46:55 +0100
commit796605c9e6122802e10dd3eb7961fb3707bdef40 (patch)
treeac6c72d52ecfc6b390bcb83d07b3996ef980f570
parent7df3baffce079b0c090530586bf0a9ce7601becf (diff)
router.lisp: Fix PCRE redirect rules.
-rw-r--r--router.lisp41
1 files changed, 22 insertions, 19 deletions
diff --git a/router.lisp b/router.lisp
index 207c9b3..9e449b5 100644
--- a/router.lisp
+++ b/router.lisp
@@ -346,25 +346,28 @@ If REVERSE, reverse the redirect logic."
(list :port port)
'())))))
(with-slots (original-url redirect-url redirect-rule trigger) route
- (build-uri
- (let ((redirect-url
- (let ((redirect (etypecase redirect-url
- (quri:uri redirect-url)
- (string (quri:make-uri :host redirect-url))
- ((or function symbol) (quri:uri (funcall redirect-url))))))
- (if (stringp trigger)
- (if (ppcre:scan trigger (render-url url))
- (ppcre:regex-replace trigger (render-url url) (render-url redirect-url))
- url)
- (typecase redirect-rule
- (string
- (if (ppcre:scan redirect-url (render-url url))
- (ppcre:regex-replace redirect-rule (render-url url) (render-url redirect-url))
- url))
- (list
- (quri:copy-uri url :host (quri:uri-host redirect)
- :path (redirect-paths redirect-rule url :reverse reverse)))
- (otherwise redirect))))))
+ (let ((redirect-url
+ (let ((redirect (etypecase redirect-url
+ (quri:uri redirect-url)
+ (string (quri:make-uri :host redirect-url))
+ ((or function symbol) (quri:uri (funcall redirect-url))))))
+ (if (stringp trigger)
+ (if (ppcre:scan trigger (render-url url))
+ (ppcre:regex-replace trigger (render-url url) (render-url redirect-url))
+ url)
+ (if redirect-rule
+ (typecase redirect-rule
+ (string
+ (if (ppcre:scan redirect-rule (render-url url))
+ (ppcre:regex-replace redirect-rule (render-url url) (render-url redirect-url))
+ url)
+ (ppcre:regex-replace redirect-rule (render-url url) (render-url redirect-url)))
+ (list
+ (quri:copy-uri url :host (quri:uri-host redirect)
+ :path (redirect-paths redirect-rule url :reverse reverse)))
+ (otherwise redirect))
+ redirect)))))
+ (build-uri
(if (and reverse original-url)
original-url
redirect-url))))))