URL路由到本地html文件
通过跟踪newlisp-redirection.lsp的代码,发现正则表达式原来使用来提取http请求的URL的最后一段,如:
> (regex {\w+\s+/([^\s]+)} "GET /dragonfly_welcome HTTP/1.1^M")
("GET /dragonfly_welcome" 0 22 "dragonfly_welcome" 5 17)
然后添加上扩展名.html,跳转到views目录的dragonfly_welcome.html文件。
之所以能跳转到views目录,是因为在dragonfly-framework/config.json文件中有这一行配置:
; location of views (for use with 'display-view' function)
(constant 'VIEWS_PATH (string DOCUMENT_ROOT "/views"))
而DOCUMENT_ROOT前文已经描述过,修改为本地目录
/opt/dragonfly-newlisp_v070/dragonfly-newlisp/example-site
所以结论是,如果有html文件,都放到views目录下。
高级一点,当我输入http://localhost:8080/foo时,会打开foo目录下的html文件。原因是在
config.lsp文件中有如下配置:
(constant 'STATIC_TRANSFORMATIONS '(
(string DOCUMENT_ROOT "/" _ "/index.html")
(string VIEWS_PATH "/" _)
(string VIEWS_PATH "/" _ VIEW_EXTENSION)
))
注意这里的_ 符号,这里自动匹配了foo,因此第一条规则找到了index.html文件。其实这个特性对于熟练掌握Nginx的人来讲诱惑不大。