【发布时间】:2016-04-10 19:05:00
【问题描述】:
我网站的 URI 结构最近发生了巨大变化,我需要将所有旧页面重定向到相应的新页面。我有一个所有新旧 URI 对的点列表。目前我正在尝试为每个循环定义简单的处理程序:
(let ((redirects '(("/old/uri/example-1" . "/new/uri/example-1"))))
(dolist (redirect redirects)
(hunchentoot:define-easy-handler (???? :uri (first redirect)) ()
(redirect (rest redirect)))
))
也许有更好的方法。假设 define-easy-handler 是正确的,它需要每个简单处理程序的函数符号。我尝试了以下方法无济于事:
- 将 (gensym) 放置在需要函数符号的位置
- 使用列表而不是点列表并在需要符号的地方调用(第一次重定向)
- 在整个内容周围放置一个 quasiquote 并在周围放置一个 unquote(第一次重定向)
什么是完成此任务的好方法?
【问题讨论】:
-
您可能需要考虑创建custom acceptor 而不是使用简单的处理程序。这样你就可以随心所欲地进行重定向。
-
谢谢@jkiiski。您的建议似乎比我的解决方法更好。我渴望有朝一日获得足够的技能来实施这样的解决方案。